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

Drive geometry для угла

СообщениеДобавлено: 15 окт 2010 15:49
3Dge
Есть 2 линии. Хочу поставить между ними постоянный угол.

Пробовал вариант такой :

Set CATIA = GetObject(, "CATIA.Application")
Set Drawingdocument1 = CATIA.ActiveDocument
Set drawingSheets1 = Drawingdocument1.Sheets
Set DrawingSheet1 = drawingSheets1.ActiveSheet
Set MyDrawingViews1 = DrawingSheet1.Views
Set DrawingView1 = DrawingSheet1.Views.ActiveView
Set myFactory2D = DrawingView1.Factory2D

... Создаём линии...(Line_Base, Line_Sh3)

iType1 = catDimAngle

Dim myElements101
myElements101 = Array(Line_Base, Line_Sh3)
Dim selpoints101
selpoints101 = Array(0, 0, 0, 0)
Dim MyDimension71 ' As DrawingDimension
Set MyDimension71 = DrawingView1.Dimensions.Add(iType1, myElements101, selpoints101, catDimVert)
MyDimension71.ValueOrientation = catVertical
MyDimension71.Name = "MyDimension71"

Далее хотел командами задать угол

CATIA.StartCommand "Definition"
CATIA.StartCommand "Drive geometry"

но это не прокатывает

есть мысль что можно задать жёсткий угол с помощью Add2 :

Set MyDimension71 = DrawingView1.Dimensions.Add2(iType, myElements101, selpoints101, iLDCRefElem, iLDCRefAngle )

но не знаю что задавать в 2 последних элемента - iLDCRefElem и iLDCRefAngle . VB ругается если задаю в качестве iLDCRefElem какую либо линию и в качетве iLDCRefElem угол в радианах.

Re: Drive geometry для угла

СообщениеДобавлено: 16 окт 2010 14:58
deNSe
попробуйте через Parameters...

Re: Drive geometry для угла

СообщениеДобавлено: 18 окт 2010 09:49
3Dge
deNSe писал(а):попробуйте через Parameters...


Если можно поподробней.

Re: Drive geometry для угла

СообщениеДобавлено: 18 окт 2010 18:52
deNSe
Ну, например, вот так:
Код: Выделить всё
Set drawingDocument1 = CATIA.ActiveDocument

Set drawingSheets1 = drawingDocument1.Sheets

Set drawingSheet1 = drawingSheets1.ActiveSheet

Set drawingViews1 = drawingSheet1.Views

Set drawingView1 = drawingViews1.Add("AutomaticNaming")

Set drawingViewGenerativeBehavior1 = drawingView1.GenerativeBehavior

drawingViewGenerativeBehavior1.DefineFrontView 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000

drawingView1.x = 104.678017

drawingView1.y = 187.331406

Dim double1
double1 = drawingSheet1.Scale

drawingView1.Scale = 1.000000

drawingView1.Activate

Set Fact2D =drawingView1.Factory2D

Set Line1 = Fact2D.CreateLine(50, 10, 150, 10)

Set Line2 = Fact2D.CreateLine(50, 10, 120, 100)

Dim iType
iType = catDimAngle

Dim myElements1(1)

myElements1(1) = Array(Line1,Line2)

Dim selpoints(3)

selpoints(3) = Array(150, 10, 120, 100)

Set MyDimension1 = drawingView1.Dimensions.Add(iType, myElements1(1), selpoints(3),catDimAuto)

Set DrwParams = drawingDocument1.Parameters

Set DrwDimVal =  DrwParams.Item("Drawing\Sheet.1\Angle.2\Angle")

DrwDimVal.Value = 45.0



но здесь, сами видите, проблема - как этот параметр найти?..

Re: Drive geometry для угла

СообщениеДобавлено: 20 окт 2010 09:02
3Dge
deNSe писал(а):Ну, например, вот так:
Код: Выделить всё

Set DrwParams = drawingDocument1.Parameters

Set DrwDimVal =  DrwParams.Item("Drawing\Sheet.1\Angle.2\Angle")

DrwDimVal.Value = 45.0





Да ему не нравиться то что в скобках после Item. Если вставить цифру 2 как в примере CAA v5 Automation, он не ругается , но и ничего не происходит.
Будем думать дальше...

Re: Drive geometry для угла

СообщениеДобавлено: 20 окт 2010 18:49
deNSe
так у Вас и мой макрос не отрабатывается? (лист д.б. пустой)

Re: Drive geometry для угла

СообщениеДобавлено: 21 окт 2010 13:12
Artem
Definition это "FrmActivate" и вызывается только через панель и c:, а вот "Drive geometry" такой команды вроде как нет. Можно попробовать для решения этой проблемы sendmessage(но это VBA) viewtopic.php?f=140&t=1558 (сценарий см. последний пост). А как найти в параметрах думаю не проблема на вскидку MyDimension1.Name из вашего примера встречается в DrwDimVal.Name в цикле нашли и все. Еще у MyDimension1.GetValue есть параметр Value, но к сожалению Read Only.
to deNSe
А как Drive Geometry поставил? Без нее параметр не поменяешь.

Re: Drive geometry для угла

СообщениеДобавлено: 21 окт 2010 19:46
deNSe
23Dge
этот скрипт работает, проверено на V5R19 SP7 (с V5R17 SP8 - затык, выдает sublist.Count = 1)
2Artem
по умолчанию

Re: Drive geometry для угла

СообщениеДобавлено: 22 окт 2010 12:54
3Dge
У меня R19 sp6. Макрос останавливается на DrwDimVal.Value = 45.0. Пока угол не меняет.

Re: Drive geometry для угла

СообщениеДобавлено: 22 окт 2010 19:10
deNSe
а сообщение об ошибке не выдает? проверьте настройки Вашего стандарта:

PS: приложил еще один макрос - очищен от "мусора"

Re: Drive geometry для угла

СообщениеДобавлено: 25 окт 2010 10:29
3Dge
to deNSe :

Не получается. Изменил в xml файле все driving с No на Yes. Тоже не помогло.

Re: Drive geometry для угла

СообщениеДобавлено: 25 окт 2010 22:34
deNSe
IMHO, имеет смысл обновить до SP7

Re: Drive geometry для угла

СообщениеДобавлено: 26 окт 2010 20:01
deNSe
проверил на V5R19 SP4 - "прокатывает"... Обращаюсь к ув. Форуму - выложенный макрос у кого-то еще работает?
PS: чертеж д.б. вновь созданным или обновленным по уточненному стандарту (см. выше)

Re: Drive geometry для угла

СообщениеДобавлено: 28 окт 2010 14:06
3Dge
Проверил - макрос работает, хотя сначала была ошибка. Проверял на v5r19sp6 и на v5r19sp0. Спасибо.