| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
> Krieger : Ну извини, на что хватило, то и сделал Работа-то тоже висит - типа сделать там надо btw, я в ActiveX тоже не Копенгаген, что с удовольствием подтвердит Лентяй
Насчет стилей: Список размерных стилей можно получить, например, так: Код:
Код:
> Krieger : Цитата:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Вот как такая программа делается с использованием функций ruCAD. Показываю не для того, чтобы применять (внутри используются спецфункции). Просто, чтобы продемонстрировать подход к структуре программы (цикл, возможность выбора опций во время ввода).
Все проверки, блокировки, обработка ошибок спрятаны внутри спецфункций ru-*, загружаемых в главной библиотеке. Рисование треугольника производится просто солидом, без создания блока. Код:
|
|||
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Цикличность я добавил, обработку ошибок сделал, пустой ввод обрабатывается, проверку наличия слоя сделал. На первое время сойдет, а чтобы сделать как советует ShaggyDoc мне еще работать и работать :cry: , но к этому надо стремиться.
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
to kpbls >
Цитата:
Я вообще сюда влез не ради критики конкретных кодов, а чтобы подтолкнуть на другой подход, на создание более надежных программ. Функция Kr_AngleWeld удовлетворяет автора - и хорошо. Она проста и без всяких "закавыков". И всегда можно подправить себе (undo включить и т.п.). Для массового, "отчужденного" использования надо делать сложнее внутри (это скрыто от пользователя) и проще и гибче "снаружи" > Krieger Цитата:
|
|||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Господа, хорошие!!! Есть ли какая-нибудь приличная (!) альтернатива команде "_area" для вычисления площади поверхности твёрдого тела. (Хотелось бы ActiveX методы) Проблема c "_area" - не могу её применить для тел лежащих внутри блоков, не открывая редактор блока, а это очень сильно замедляет программу если блоков выше крышы!!!
[sm1400] ???? |
|||
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
Цитата:
Как вариант - прицепить значения непосредственно к телам (например, в XDATA) после их создания или при создании блока. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Можно по идее попробовать получить примитив через (nentsel) и к нему уже применять _area
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Цитата:
-> kpblc Команда: (setq ename (car (nentsel)))(print ename)(command "_area" "О" ename) ;выбираю вложенное тело: Выберите объект: <Имя объекта: 7ef70e50> _area Первая угловая точка или [Объект/Добавить/Вычесть]: О Выберите объекты: <Неверное имя объекта: 7EF70E50> nil "_area" по всей видимости дружит только с примитивами экрана (как например "ssget" |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Похоже на особенность функциклирования _area. У меня тоже не сработало
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
Цитата:
|
|||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
-> VVA Очень интересно, почему после (vlax-invoke item 'Explode) само вхождение остаётся в рисунке? (думал оно автоматом удаляется!)
Работает довольно быстро, большое спасибо, но моя программа как вы и хотели вначале должна создать именно атрибут с площадью тела в блоке. Есть на входе <имя примитива> 3dsolid в описании блока, нужна его площадь. Я делаю примерно так: Код:
А по поводу открывать-закрывать - это пример. |
|||
|
||||
Цитата:
Цитата:
|
||||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
->VVA Пардон!!! обознался (VA)
Я кстати немецкий когдато изучал, а с английским PROMT выдаёт такую белиберду: Вы не должны взорвать блок, чтобы управлять его объектами непосредственной составляющей. Все выделения блока имеют метод Элемента{Пункта}, которые позволяют Вам управлять объектами в пределах блока, не взрывая выделение блока непосредственно. Да и вообще я с Автокадом и В. Лиспом только-только начал знакомиться... |
|||
|
||||
Цитата:
А насчет атрибута, на форуме были лиспы по созданию блоков методами ActiveX как из примитивов так и из существеющих блоков. Поищи. А еще лучше спроси у kpblca. У него этого добра есть. Например здесь http://www.arcada.com.ua/forum/viewt...er=asc&start=0 сообщение Добавлено: Пт 23 Июн , 2006 12:37 и здесь http://my.opera.com/kpblc/blog/ Скачай Cadware и посмотри, там лисп, есть чего подсмотреть :wink: Можно сделать проще, включить в новый блок обработанный + артибут с его площадью. |
||||
|
||||
Цитата:
Вы не дожны взрывать/ расчленять (бррр уголовшина) блок чтобы манипулировать с его примитивами. Все блоки (определения блоков) имеют метод Item, который позволяет манипулировать элементами блока без его взрывания. Использование vla-item Последний раз редактировалось VVA, 18.09.2015 в 23:52. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Но в таком случае ты работать будешь с описанием блока, а не с конкретной вставкой (а для вставки могут быть установлены разные коээфициенты масштабирования, соответственно площадь будет уже другой).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
->VVA :roll: Немного о разном говорим. Мне этот вопрос (area) интересен в целях образования. Как чего писать (за что спасибо!) это одно , а вот новая идея это другое. Эта часть программы у меня давно уже готова и работает, но осталось чувство что можно было бы лучше.
Ведь как работает "area" с телом - наверно, извлекает из тела грани, из них замкнутые полилинии, а дальше считает (как-то) площадь замкнутой полилинии (например, как vlax-curve-getArea), а где-то програмисты поленились или лоханулись и теперь у меня такая вот проблема. Может есть идеи с vlax-curve-getArea ??? Хотелось бы тут копать!!! |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Так ета... (vlax-curve-*), по-моему, работает только с кривыми, насколько я знаю. Солиды это другое.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||