| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 11.10.2010
Сообщений: 980
|
Сначала вставляется файл, содержащий блок (command "_.-insert" FileName) (command)
Потом вставляешь уже сам блок "Профиль В". P.S. На форуме есть тема, название, кажется, "На заметку программистам" - там были какие-то коды. P.P.S. Посмотри настройки инструмента. DXF Reference в руки, 10 группа.
__________________
(/= RegDate StartReadDate) |
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
Цитата:
1. Когда я подгружаю файл содержащий нужный мне блок, он хочет его вставить на текущий чертеж, можно ли сделать так чтобы он только подгружал из него блоки без запроса вставки ? 2. Я что-то, не понял какого инструмента настройки смотреть ? я хочу чтобы они при вставке разбивались. 3. Можно ли избавиться от спама к командной строке, который сопровождает вставку блока ? |
|||
|
||||
Регистрация: 11.10.2010
Сообщений: 980
|
1. Я ж написал самый простой вариант: (command "_.-insert" <FileName>) (command)
2. Настройки инструмента на ToolPalette, который у тебя выполняет вставку блока 3. Можно cmdecho -> 0; nomutt -> 1. Потом вернуть все обратно
__________________
(/= RegDate StartReadDate) |
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
|
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
Да, так действительно проще, спасибо
Я столкнулся вот с такой проблемой: Есть полилиния (рамка) вот ее DXF: ((-1 . <Имя объекта: 7ec57e30>) (0 . "LWPOLYLINE") (330 . <Имя объекта: 7ef90cf8>) (5 . "C06") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.5) (38 . 0.0) (39 . 0.0) (10 -110.0 -130.0) (40 . 0.5) (41 . 0.5) (42 . 0.0) (10 -110.0 280.0) (40 . 0.5) (41 . 0.5) (42 . 0.0) (10 337.0 280.0) (40 . 0.5) (41 . 0.5) (42 . 0.0) (10 337.0 -130.0) (40 . 0.5) (41 . 0.5) (42 . 0.0) (210 0.0 0.0 1.0)) В ней аж 4 группы с 10-кой, как мне ее опустить по Y на 10 единиц ? |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
без проверки - как-то так:
(entmode (mapcar '(lambda (x) (if (= (car x) 10) (cons 10 (cons (cadr x) (cons (-(caddr x) 10) (cdddr x)))) x)) DXF)) но ихмо - в данном случае "надежней" vla: (vla-move (vlax-ename->vla-object (entlast)) (vlax-3d-point '(0 10 0)) (vlax-3d-point '(0 0 0)))
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 25.01.2011 в 17:44. |
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
Цитата:
DXF не запустился. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
там где выделенно DXF должен быть dxf код полилинии (типа того что вы писали) - как вариант (entget (entlast))
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
И не запустится. Нужно не entmode, а entmod
А так красивее Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
А Вы бы не могли разъяснить поэтапно, как для дурака, как это работает ? =) И если не трудно применительно к такому вот примеру:
Есть полилиния : ((-1 . <Имя объекта: 7e909850>) (0 . "LWPOLYLINE") (330 . <Имя объекта: 7ef90cf8>) (5 . "4B12") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyline") (90 . 2) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 26.2914 84.5212) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 27.5839 84.5212) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0)) Как мне изменить все ее Х координаты на свои переменные X1 и X2 ? |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
(and ; это альтернатива проверки условия (if) если первый опрератор (setq...) вернет nil то следуящея команда выполняться не будет
(setq DXF (entget(car(entsel "\Выбери полилинию: ")))) ;присваивает значению DXF список dxf кодов выбранного примитива (entmod ;преобразовать примитив (mapcar ;вернуть обработанные следующей функцией все элементы списка (dxf) '(lambda (x);функция принимающая на входе 1 аргумент - ассоциативную пару (список, либо cons-пара где первый элемент является кодом остальной части списка) (if(= (car x) 10);если код пары = 10 (координата) (cons 10 (mapcar '- (cdr x) '(0 -10))); создать ассоативный список с кодом 10 (координата) и координатой меньше начальной по оси X на 0, по оси Y на 10 (ноль, так-же, можно поменять на любое число (в т.ч. и отрицательное) - для изменения координаты Х) x));в противном случае (не код 10) - вернуть полученное значение без изменений DXF ;обрабатываемый список кодов)))
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 27.01.2011 в 13:50. |
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
Цитата:
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
Вариант 2 - рекурсивный - написать самовызывающую функцию последовательно "обходящею список", с дополнительными аргументами (номера, четности и пр.) - несколько иная логика работы - но без проблем будет работать с многовложенными списками и пр. "неожиданостями". p.s. - за активное применение второго метода иногда "сыплется" критика со стороны формучан.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Регистрация: 16.11.2010
Сообщений: 89
|
Ну второй вариант мне пока по определению явно не доступен. Поэтому я остановлю свой выбор на 1-ом, вот я немного модифицировал код под свои нужды, предоставленный как пример, VVA.
(entmod (mapcar '(lambda (x) (if(and (= (car x) 10) (= minkoordX (cadr x))) (cons 10 (mapcar '+ (cdr x) '(0.5 0))) x)) dno)) (entmod (mapcar '(lambda (x1) (if(and (= (car x1) 10) (= (+ minkoordX 4) (cadr x1))) (cons 10 (mapcar '- (cdr x1) '(0.5 0))) x1)) dno)) В итоге первым действием все как и было мной задумано отрезок полилинии(слева) укорачивается на 0.5, а вот вторым действием вместо укорачивания почему-то отрезок просто перемещаться налево на 0.5, а если повторить все с первого действия то отрезок начинает просто перемещаться то на 0.5 налево, то направо. Где я ошибся ? |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Это и есть одна из тех многочисленных "неожиданостей" которые всплывают при использовании "простого первого метода" - после entmod dno надо обновить - а то он производит изменения в соответствии с первыми (изначальными) параметрами. Если программа будет чуть посложней - иногда очень не просто не упустить, что сейчас у тебя в переменной.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Несоответствие результатов в Лире | s.vas | Лира / Лира-САПР | 19 | 11.11.2009 07:31 |
Пожалуста помогите правельно написать формулу для Schedule- спецификации | tighineanur | Вертикальные решения на базе AutoCAD | 6 | 24.02.2009 11:24 |
Помощь по Лире | Серега М | Лира / Лира-САПР | 52 | 28.05.2007 02:47 |
Не могу понять в чем ошибка... | DY | Программирование | 5 | 21.02.2007 17:35 |