|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как вставить один прямоугольник через лисп?
Регистрация: 19.08.2022
Сообщений: 71
|
||
Просмотров: 5036
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
А почему не использовать дин.блок?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 19.08.2022
Сообщений: 71
|
Во-первых у этих прямоугольников всегда разные длины (а строить несколько блоков как-то неудобно).
Во-вторых мне потом надо будет как-то быстро посчитать длины этих прямоугольников (а считаю я их через лисп, "ELEN"), в блоках же дину не извлечешь лиспом "ELEN". |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Блок - один. С дин.параметром "растягивание". А длины можно посчитать через тот же _.dataextraction
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013
|
Как вариант - вставка блока с поворотом и масштабированием
(setq Point1 (getpoint "\nТочка 1 (вставки): ")) (setq Point2 (getpoint "\nТочка 2 (направление): ")) (setq Ang (/ (* (angle Point1 Point2) 180) pi)) (setq Sca (* (distance Point1 Point2) 2)) (vl-cmdf "_.-insert" "block" Point1 Sca 1 Ang "") Последний раз редактировалось Nike, 22.12.2022 в 13:09. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013
|
(DEFUN c:as (/ Point1 Point2 Ang Sca)
(setq Point1 (getpoint "\nТочка 1 (вставки): ")) (setq Point2 (getpoint "\nТочка 2 (направление): ")) (setq Ang (/ (* (angle Point1 Point2) 180) pi)) (setq Sca (* (distance Point1 Point2) 2)) (vl-cmdf "_.-insert" "block" Point1 Sca 1 Ang "") ----- добавлено через ~2 мин. ----- А не проще будет не прямоугольником, а мультилинией? |
|||
![]() |
|
||||
Регистрация: 19.08.2022
Сообщений: 71
|
Имеешь ввиду полилинией?,
Цитата:
----- добавлено через ~47 мин. ----- Люди а вы знаете как вот эту строчку, в таком виде↓ ^C^C_-insert;Название чертежа(без формата и без пробелов);\1;1;0;_EXPLODE;_last;_-purge;_Blocks;"Название чертежа(без формата и без пробелов)";_No;;; Как ее прописать вместо "block" из этой строчки↓ (vl-cmdf "_.-insert" "block" Point1 Sca 1 Ang "") Но что бы в лиспе это читалось!??? Я короче подумал что это должно сработать. Но не уверен |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Ну тогда надо вычислить координаты 4 точек на расстоянии 0,4/2 от точек привязки задавая угол +-pi/2 к углу оси трубы. Когда координаты 4 точек будут вычислены, по этим координатам надо построить полилинию и потом замкнуть её. Это не сильно сложно. Непонятно только какой командой надо строить полилинию на ЛИСП.
|
|||
![]() |
|
||||
Регистрация: 19.08.2022
Сообщений: 71
|
Цитата:
----- добавлено через ~1 мин. ----- _pline?? или _rectang?? |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Прямоугольник всегда строится вдоль осей X и Y. Задать поворот прямоугольнику нельзя. Надо получить координаты 4 точек и потом по этим точкам построить замкнутую полилинию. На VBA для этого есть команда addLWPLine, а на ЛИСП какая для этого используется команда? Вроде бы эта команда называется vla-addLightweightPolyline. Надо найти примеры с использованием этой команды
|
|||
![]() |
|
||||
Регистрация: 19.08.2022
Сообщений: 71
|
Цитата:
(command "_.PLINE" z '(0 297) '(0 297) v "_C") где "z" и "v" (setq z (getpoint "\nУкажите базовую точку : ")) (setq v (getpoint "\nУкажите базовую точку : ")) А как координаты прописать по другому, чтоб "необходимый мне" прямоугольник построился, я не знаю. ;0 |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Что это обозначает?
Если строить через командную строку, то лучше использовать команду _rectang. Через указанные две точки находится длина прямоугольника и угол поворота. Далее строится прямоугольник заданной длины и высоты (0,4) и потом поворачивается на вычисленный угол. Можно сделать команду построения прямоугольника заданной длины, а потом повернуть его "вручную" (setq Point1 (getpoint "\nТочка 1 (вставки): ")) (setq Point2 (getpoint "\nТочка 2 (направление): ")) (setq Length (* (distance Point1 Point2) 2)) (command "_rectang @" Length "0.4") Последний раз редактировалось МишаИнженер, 23.12.2022 в 10:24. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Для создания полилинии - либо vla-addlightweightpolyline, либо entmake / entmakex.
Для вычисления координат - polar.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Эвакуация из категории А через категорию В | проект 1234 | Пожарная безопасность | 1 | 02.06.2017 18:01 |
Изменить значение в таблице через Лисп | kurstep | LISP | 5 | 14.08.2014 18:07 |
Цикл печати изображений в файл, через Лисп | proektant-minsk | LISP | 7 | 26.09.2012 20:30 |
Через 25 лет стоимость эксплуатации превышает стоимость строительства ? | Tyhig | Архитектура | 41 | 24.08.2011 11:00 |
Не могу скопировать файл один в другой через буфер обмена | AnnaS | AutoCAD | 4 | 12.07.2010 22:25 |