Тема: Как получить координаты узлов полилинии?
Выбираю через selectionset полилинии. Как добраться до координат узлов этих полилиний не прибегая к лиспу?
Поможите!
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Delphi → Как получить координаты узлов полилинии?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Выбираю через selectionset полилинии. Как добраться до координат узлов этих полилиний не прибегая к лиспу?
Поможите!
Помогите! Вот пример для наглядности:
var acad:iacadapplication;
pe1,pe2,pe3,pe4,pe5,pe6:real;
pt:olevariant;
selset:IAcadSelectionSet;
FT: OleVariant;
FD: OleVariant;
P: IAcadLWPolyLine;
begin
try
acad:=getactiveoleobject('autocad.application') as iacadapplication;
form1.AcadDocument1.ConnectTo(acad.ActiveDocument);
except
end;
Pt:= VarArrayCreate([0, 5], VarDouble);
pt[0]:=0;
pt[1]:=1;
pt[2]:=2;
pt[3]:=3;
pt[4]:=4;
pt[5]:=5;
acad.ActiveDocument.ModelSpace.AddLightWeightPolylin(pt);
// Полилиния чертится, всё нормально. Если наоборот то не работает:
FT:=VarArrayCreate([0,0],VT_I2);
FD:=VarArrayCreate([0,0],VT_VARIANT);
FT[0]:=0;
FD[0]:='Lwpolyline';
selSet:=acad.ActiveDocument.SelectionSets.Add('fifffkkks');
SelSet.SelectOnScreen(ft,fd);
p:=(SelSet.Item(0) as IAcadlwpolyline);
Pt:= VarArrayCreate([0, 5], VarDouble);
pt:=p.coordinates;
pe1:=pt[0];
pe2:=pt[1];
pe3:=pt[2];
pe4:=pt[3];
pe5:=pt[4];
pe6:=pt[5];
//Координаты pe почему-то равны нулю. Хотя выбираю полилинию которую только что создал выше. Где ошибка, не пойму?
SelSet.Delete;
end;
VT_I2 - может стипом напутал? У меня по-другому получилось:
var
acad:iacadapplication;
pt:olevariant;
disp: IDispatch;
P: IAcadLWPolyLine;
pe1,pe2,pe3,pe4,pe5,pe6:real;
begin
try
acad:=GetAcadApplication(true);
except
end;
acad.ActiveDocument.Utility.GetEntity(disp, emptyparam, 'Ткни полилинию');
Pt:= VarArrayCreate([0, 5], VarDouble);
p:=(disp as IAcadlwpolyline);
pt:= p.Coordinates;
pe1:=pt[0];
pe2:=pt[1];
pe3:=pt[2];
pe4:=pt[3];
pe5:=pt[4];
pe6:=pt[5];
end;
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Delphi → Как получить координаты узлов полилинии?
Форум работает на PunBB, при поддержке Informer Technologies, Inc