Страница 1 из 1

Trim в Drafting

СообщениеДобавлено: 30 июн 2009 01:20
RIMs
какую функцию использовать, чтобы подрезать линию 2Д?

Спасибо.

Re: Trim в Drafting

СообщениеДобавлено: 30 июн 2009 20:52
keeper
А при чём здесь CAA-RADE? :D
Такие вопросы сюда: viewforum.php?f=156
Линии что созданные с 3-мерхних моделей подрезать нельзя! можна лишь создать с них копию, и копию уж подрезать, а спроектированную скрыть!

Re: Trim в Drafting

СообщениеДобавлено: 30 июн 2009 22:04
RIMs
Спасибо Кипер, меня собственно и интересует как подрезать две от руки нарисованые линий (без 3Д).

Re: Trim в Drafting

СообщениеДобавлено: 02 июл 2009 07:13
Artem
кое что есть вот здесь:
http://www.coe.org/Collaboration/Discus ... fault.aspx
У Factory2D есть метод CreateIntersection(reference)........У drawingdocument есть CreateReferenceFromName..........вот только как это имя получить вопрос (.name естественно не катит, Drawing1/!nameofline тоже)

Re: Trim в Drafting

СообщениеДобавлено: 02 июл 2009 12:00
booSter
IMHO: CreateIntersection создаёт пересечение 3D-геометрии с плоскостью скетча - следовательно для дравинга (и данной задачи) бесполезен...

Re: Trim в Drafting

СообщениеДобавлено: 02 июл 2009 13:24
Artem
ну там еще CreateIntersections есть....А вообще вот так:
Код: Выделить всё
Sub CATMain()

Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = drawingDocument1.Selection

selection1.Search "CATDrwSearch.2DLine.Name='Line.2',all"
'Set line2 = selection1.Item(1).Value
'selection1.Search "CATDrwSearch.2DLine.Name='Line.1',all"
'MsgBox selection1.Count
CATIA.StartCommand "Break" '"Quick Trim"
selection1.Search "CATDrwSearch.2DLine.Name='Line.1',all"
'MsgBox "jjjjjjjj"
'selection1.Clear
'selection1.Add (line2)
End Sub

собственно трим треба, после своего вызова, ткнуть на элемент мышкой (селект не катит однако)...гипотетически можно конечно реализовать.....а практически западло высчитывать положение другого элемента(думаю и с быстрым тримом/бреаком + последующим удалением "лишних" линий вашу задачу можно нормально решить)

Re: Trim в Drafting

СообщениеДобавлено: 02 июл 2009 16:28
RIMs
Спасибо.
Идея в том чтобы подрезать несколько линий по одной, при этом не перещелкивая каждую. (см. рисунок), поэтому варианты Trim - Break не подходят

Re: Trim в Drafting

СообщениеДобавлено: 02 июл 2009 22:45
[PTM]
ластик) до ближайшего
тему пренести?

Re: Trim в Drafting

СообщениеДобавлено: 06 июл 2009 00:24
RIMs
Спасибо, раньше не знал как ластик работает - полезная фича.
Но мне не подходит:
1. он подрезает, но не удлинняет
2. перещелкивать линии все равно надо, а их может быть очень не мало. И операция на одном чертеже не единичная

и для альтенативных вариантов: перерисовывать линии тоже нельзя, между ними что-то может располагаться что нельзя двигать. Даю картинку варианта.

Re: Trim в Drafting

СообщениеДобавлено: 06 июл 2009 08:57
Artem
Необходимо чтобы часть линий обрезалась, а часть удлинялась?...И при этом автоматически определялся набор этих самых линий?......однако, для этого желательны дополнительные параметры для фильтрации(ну например суффикс/префикс какой-нить в названии подрезаемых линий). Непонятно при чем тут перерисовка и невозможность двигать другие обьекты...С удлинением (да по идее и с обрезанием) наверно придется воспользоваться вышкой - если в операции учавствуют только линии, то достаточно просто расчитать новые координаты конечных точек и задать их(.EndPoint(StartPoint).SetData)
PS. С чистым обрезанием (без удлинения) можно просто пройтись по всем линиям( кстати для выбирания стороны наверное лучше воспользоваться break - все что справо остается со старым именем, новая линия слева)

Re: Trim в Drafting

СообщениеДобавлено: 06 июл 2009 17:22
RIMs
с выделением пока проблем не вижу. Прежде чем запускать макрос выделить подрезаемые линии и последней линию границы подрезки. Line2 берется последней из найденных, Line1 перебирается от первой до предпоследней.
Selection1.Search ("Drafting.Line,sel")
Dim Line1 As Line2D
Dim Line2 As Line2D
i = Selection1.Count
Set Line1 = Selection1.Item(1).Value
Set Line2 = Selection1.Item(i).Value

Ок, поковыряюсь с математикой :) спасибо