Проблема с массивом..........

Автор Nesh, 09.02.06, 15:33:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Nesh

Не могу почему то сделать масив по коцетрической сетке. При создании выдает сообщения библиотеки"Неверная кривая".
:?: :?: :?:хотя в свойствах SetAxis(eskiz4); где eskiz4 прямая линия со свойствами осевой...
Может я чето делаю не так???? Помогите. Заранее спасибо...

IronMaxxx

Не до конца понятен вопрос: что значит прямая линия со свойствами осевой? Должна быть просто осевая.
А чтоб зря не париться выложи код инициализации твоего eskiz4, тогда можна будет что-то конкретнее посоветовать...

Slaviation


Можно в качестве оси для массива выбрать и отрезок из эскиза (со стилем осевой).
Допустим, на руках есть интерфейс этого эскиза. Получаем его  фьючерс:
iSketchFeature:=ksFeature(iSketchEntity.GetFeature);
Далее получаем коллекцию ребер из фьючерса:
iEdgeCollection:=ksEntityCollection(iSketchFeature.EntityCollection(o3d_edge));
Далее берем из коллекции нужное ребро, и ставим его осью в концентрический массив.



IronMaxxx

Можно и так, но я чаще использую какую-либо из стандартных вспомогательных осей. Там уже точно не ошибешься.

Nesh

Проблема вот в чем...

eskiz:=ksEntity(part.GetDefaultENtity(o3d_scetch);
eskizDef:=ksScetchDefenition(eskiz.GetDefenition());
eskizDef.SetPlane(plane);\\ плоскость XOY
doc2d:=ksDocument2d(eskiizdef.BeginEdit);
doc2d.ksLine(0,0,0,10,3);
eskizdef.Endedit;
...


mass1.SetAxis(eskiz);

Не могу понять почему при создании массива, ескиз оопределяется как линия (не осевая), если индикатор 3 соотвествует именно осевой?????????
Вспомогательная ось выходит...


IronMaxxx

1. Вместо ksPart::GetDefaultENtity нужно ипользовать ksPart::NewEntity. GetDefaultENtity используется только для координатных плоскостей и точки начала координат, для всех остальных Entity нужно использовать GetDefaultENtity.
2. Смотри ответ №2 от Slaviation. Не может быть осью эскиз! В качестве оси может быть задана одна из стандартных вспомогательных осей (на пересечении плоскостей, ось конической поверхности и пр. - это все объекты ksEntity для осей) или же, как указал Slaviation, ребро (в его случае просто осевая линия, которая через ksFeature ее эскиза опять же должна быть приведена к ksEntity(o3d_edge)).
Применительно к твоей ситуации: подумай логически сам, ведь при указании оси вручную в КОМАСе мы указываем не эскиз, а ребро. Т.е. твоя осевая линия при выборе подсвечивается как любое другое ребро, и ты кликаешь мышкой не в эскиз, ее содержащий, а именно по самому выделенному ребру. Точно так же должно быть и в программе.

Nesh

Огромное спасибо за толковое разяснение!!!