|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
30.06.2016, 15:46 | #1 | |
LISP. Как в ActiveX выдернуть координаты полилинии? Как задавать атребуты блока через LISP?
Регистрация: 16.03.2015
Сообщений: 13
|
||
Просмотров: 7500
|
|
||||
Регистрация: 16.03.2015
Сообщений: 13
|
Суть в том, что я планировал обращаться к каждому конкретному блоку по значению этого атрибута.
Как я понимаю - реализовать это нельзя? как я понимаю, придется создавать список с именами всех блоков и через него обращаться к конкретному блоку. другого выхода не вижу. |
|||
|
||||
Регистрация: 16.03.2015
Сообщений: 13
|
Цитата:
суть в чем: есть полилиния - трасса расположения видеокамер, ее надо разметить блоками. тонкость в том, что после вершины полилинии нужно размечать нужно заново (чтобы начало участка отсчитывалось от вершины) и так же чтобы автоматически проставлялась нумерация. хотел чтобы нумерация была в рамках атрибуха, чтобы потом можно было составить кабельный журнал автоматически. |
|||
|
||||
Регистрация: 23.09.2015
Сообщений: 146
|
Цитата:
1. имеется полилиния - трасса расположения видеокамер (pl1). 2. создается набор из камер на полилинии. 3. запрос номера начала отсчета камеры 3. функция repeat (повтор количества блоков камер набора - n) 3.1. копировать pl1 (pl2) 3.2. обрезать от точки вставки блока до конца pl2 3.3. присвоение атрибуту блока номера начала отсчета камеры 3.4. атрибуту блока номера начала отсчета камеры + 1 |
|||
|
||||
Регистрация: 16.03.2015
Сообщений: 13
|
Цитата:
только у меня теперь вопрос, а можно как то получить номера объектов, входящих в одну группу? |
|||
|
||||
Регистрация: 16.03.2015
Сообщений: 13
|
|
|||
|
||||
По поводу вопроса как работать с ActiveX и вариантами - найди Полещука "AutoLisp и Visual Lisp в среде автокад" В главе 6 описаны все методы работы с вариантами.
По поводу получения координат полилинии есть целая пачка команд вида vlax-curve-... (глава 6.7 там же). Суть в следующем: каждая вершина - есть целочисленный параметр. Насколько я понял задачу: надо от вершины расставлять с шагом до следующей вершины. -getDistAtParam - получаешь расстояние на вершине n (L1) и вершине n+1 (L2). -getPointAtDist - получаешь точки на расстояниях с заданным шагом (L1+step), пока это расстояние меньше L2. Повторять такой маневр, пока не дойдешь до EndParam
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
Регистрация: 16.03.2015
Сообщений: 13
|
Цитата:
А есть идея как мне привязать нумерацию камеры к конкретному блоку и чтобы, в случае необходимости, можно было бы к нему обращаться через номер? или мне придется через массив запоминать все номера блоков в чертеже и уже через массив обращаться к конкретному блоку? |
|||
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
1. Прочти книжку. 2, С помощью книжки научись создавать наборы блоков по имени блока. 3. С помощью книжки научись читать атрибуты блоков и искать атрибут с заданным значением. 4. С помощью книжки научись пользоваться методом ObjectID-to-Object и делай с блоком все, что хочешь, к примеру, Highlight найденный блок. 5. И будет тебе щастя. |
|||
|
||||
Цитата:
з.ы. (vlax-dump-object (vlax-ename->vla-object (car (entsel))) t) тебе в помощь
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
Регистрация: 16.03.2015
Сообщений: 13
|
Цитата:
----- добавлено через ~17 ч. ----- То что задумывало на первом этапе у меня получилось, но хочется привести все в божеский вид, а именно меня не устраивает то, что блок вставляется следующей строкой (command "_-insert" "bk" (vlax-curve-GetPointAtDist pline rastoyanie) "" "" ygol ) при этом блок "bk" находится в папке с вспомогательными файлами. а возможно при помощи команд activex вставлять блок? Книга Полищука конечно классная, но СЛИШКОМ МНОГО информации и все не запомнишь без практики. Если кто может, подскажите на какие разделы стоит обратить внимание в первую очередь. Цитата:
(setq HH (car (get_URL Ob))) Последний раз редактировалось wpww, 21.07.2016 в 10:32. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Можно, если описание блока есть в текущем файле (читать LISP. СОЗДАНИЕ БЛОКА.)
По поводу библиотечной функции см. На заметку программистам
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
wpww, предлагаю следующий подход: прочитать внимательно разделы 1.4-1.13, что бы получить представление по основному функционалу языка.
Что касается рисования методами activex, надо разобраться в структуре объектной модели: что бы рисовать что либо графическое есть методы vla-addLine(любой другой примитив). Если надо нарисовать блок, тут надо помнить, что блок, это не просто примитив и для него есть специальный метод vla-InsertBlock. Найдя нужный метод, книга Полещука поможет разобраться с количеством и порядком обязательных параметров. Разобравшись с этим, можно либо написать свою библиотечную обертку для передачи нужных параметров, либо, для начала, прописывать обработку свойств по месту вставки. Или найти готовое решение. Что бы разобраться со свойствами объекта поможет встроенная справка автокада (иерархия объектной модели очень наглядно изображена), либо Цитата:
А потом вместо объекта можно подсунуть что угодно, начиная с (vlax-get-acad-object), заканчивая последним, забытым богом, словарем или примитивом.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка блока из чертежа исходя из двух параметров (длина и ширина) | Kairat.iskakov | LISP | 6 | 17.05.2016 15:04 |
Lisp. авто-нумерация атрибута блока. | DonJad | LISP | 10 | 26.10.2014 02:04 |
lisp: Длина по полилинии до точки | vosh | LISP | 19 | 15.07.2013 15:10 |
Координаты точки, лежащей на полилинии | Al_Taron | Программирование | 1 | 27.11.2006 09:45 |