| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп =выноска+поле

Лисп =выноска+поле

Ответ
Поиск в этой теме
Непрочитано 18.04.2006, 21:30
Лисп =выноска+поле
Pave1
 
электроснабжение и автоматика
 
г. Пермь
Регистрация: 21.06.2005
Сообщений: 329

Для тех кто умеет писать лиспы это наверное не сложная задачка, а мне, да и другим проектировщикам занимающимся электрикой, пригодился бы вот такой лисп:
1. указываешь линию (отрезок/полилинию/3D полилинию);
2. место вставки.
А лисп за тебя прописывает в получившейся сноске название слоя, к которому относится линия, и хорошо бы еще название слоя было в виде поля (field), чтобы если вдруг захочется изменить слой линии, надпись менялась и соответствовала новому слою.

А может у кого-нибудь уже есть что-нибудь подобное?
Буду признателен.
__________________
хочу все знать
Просмотров: 26057
 
Непрочитано 08.11.2006, 10:03
#41
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,407


Хочешь бей меня, хочешь - режь, а все равно последний код работает! Я попробовал на 2005, 2006, 2007 (и просто ACAD, и ADT) - работает, собака!
---
Добавлено: во вложении - сплющенный и почищенный файл
[ATTACH]1162971501.dwg[/ATTACH]
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2006, 03:54
#42
murzilka


 
Регистрация: 23.08.2006
Краснодар
Сообщений: 21


Бодрова утра!!!
Бить и резать нибуду!!! )))
Потому как у миня версия 2004!!! и это изза лицензии (((
кстати проверял на 2006. на том же файле...
один раз сработала нормально
а второй раз...
выдала ашипку:
*ERRNO # 2: no function definition: VLAX-GET-ACAD-OBJECT
; ошибка: В функции *error* возникла ошибка:нет описания функции:
VLA-ENDUNDOMARK* )))
чьто йето такое??? )))
murzilka вне форума  
 
Непрочитано 09.11.2006, 08:02
#43
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,407


Ни себе фига вареники... В общем, так. Это ошибка загрузки activex расширения (в версиях 2005 и выше оно на автомате, а вот в "раньших" версиях не совсем). В коде прямо перед строкой
Код:
[Выделить все]
(setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
вбей
Код:
- должно работать.
И по идее лицензированность продукта побоку. Черт, нет инсталла 2004, а так бы там проверил. Попробую что-нибудь придумать...
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2006, 11:00
#44
murzilka


 
Регистрация: 23.08.2006
Краснодар
Сообщений: 21


Ну с шестым мы вроде победили.
Обработал на ура.
Но вот с моим 2004 что то никак. Все так же фатал еррор. Как и раньше...
А про лицензию пишу потому что мне можна работать тока на 2004, на работе.
murzilka вне форума  
 
Непрочитано 09.11.2006, 11:57
#45
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,407


Вроде как что-то 2004-образное нашел, сейчас попробую поставить.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2006, 12:23
#46
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,407


В общем, проблема пришла откуда не ждали
Все дело в этих чертовых блоках. Точнее, в их атрибутах. Как только снимается команда attsync, все становится чики-пуки. Возможно, это глюки моей установки; сервис-пака я на ACAD2004 не ставил (слетает возможность запуска). Как вариант: снять это дело с программы и выполнять руками. Как, покатит?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.11.2006, 06:30
#47
murzilka


 
Регистрация: 23.08.2006
Краснодар
Сообщений: 21


Неее, мне так не понравилось. Он совсем отказался обрабатывать блоки, точнее блок вроде как перетащил а атрибуты оставил.

Цитата:
Возможно, это глюки моей установки; сервис-пака я на ACAD2004 не ставил (слетает возможность запуска).
А это я вааще ни понял... Какой такой сервис-пак. Если винда то у меня ща вааще 2000. Если Автокад то я и не слышал что такие бывают...
murzilka вне форума  
 
Непрочитано 10.11.2006, 08:18
#48
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,407


Суть тут в том, что атрибуты имеют собственные свойства вставок, которые могут отличаться от настроек вставки блока, а также от свойств описания блока. Поэтому при такой задаче приходится их менять. Попытки сделать "все программно" у меня провалились (почему - не очень понял, вроде как все нормально делал, а эффекта все одно нуль). Пришлось обращаться к штатной команде AutoCAD'a - _.attsync, а она, зараза этакая, в 2005 и выше работает нормально, а вот в 2004 хамит не по детски.
Сервис-пак можно (для чистого AutoCAD 2004) можно скачать (да и прочитать про него) можно здесь.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.11.2006, 02:06
#49
murzilka


 
Регистрация: 23.08.2006
Краснодар
Сообщений: 21


Доброва утра!!!
Ну и ладна. Я уже магу тебе передать огромное спасибо за эту прогу, от коллег, и от себя ))). Самое главное что она обрабатывает размеры.
Ну а что делать бум с выноской
у миня все такжи " bad argument type: consp 512 " пишет...
murzilka вне форума  
 
Непрочитано 13.11.2006, 08:17
#50
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,407


Попробую сегодня разобраться.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.11.2006, 06:07
#51
murzilka


 
Регистрация: 23.08.2006
Краснодар
Сообщений: 21


Уважаемый KRblC
Я все еще жду :P
murzilka вне форума  
 
Непрочитано 28.06.2021, 13:13
#52
posetitel


 
Регистрация: 16.10.2013
Сообщений: 220


здравствуйте!
Подниму тему.
Вопрос такой же как у топикстатера: лисп с выполнением выноски и мультитекста с указанием слоев в которых находятся полилинии.
Первый лисп почти подходит, но в нем не получается сама выноска и к названию слоев еще добавляются какие-то данные.
Можно ли отредактировать лисп из второго сообщения чтобы рисовалась выноска и в мультитексте были только перечисления слоев?
posetitel вне форума  
 
Непрочитано 29.06.2021, 09:28
#53
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 470
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


что то похожее совсем недавно решалось рядом . Только вместо блока переписать на полилинии и вместо атрибута имя слоя
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 29.06.2021, 09:43
#54
posetitel


 
Регистрация: 16.10.2013
Сообщений: 220


Vladimir_Sergeevich, спасибо за наводку.
Для асов лиспа, наверняка, это не составит труда вообще, интуитивно догадываюсь, что надо заменить пару команд, может быть с синтаксисом поколдовать.
Но вот для просты чертежников, которым я являюсь, эта задача становится непосильной
posetitel вне форума  
 
Непрочитано 29.06.2021, 10:58
1 | #55
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,284


без заморочек и не редакция, все попавшие в pickbox
Код:
[Выделить все]
 

;******************************************************************************************************************************************

(defun cp_select (pick_center / half_pick_box)
	(setq half_pick_box (* (getvar 'pickbox) (/ (getvar 'viewsize) (cadr (getvar 'screensize)))))
	(ssget "_cp" (list (list (- (car pick_center) half_pick_box) (- (cadr pick_center) half_pick_box))
				  	   (list (- (car pick_center) half_pick_box) (+ (cadr pick_center) half_pick_box))
				  	   (list (+ (car pick_center) half_pick_box) (+ (cadr pick_center) half_pick_box))
				  	   (list (+ (car pick_center) half_pick_box) (- (cadr pick_center) half_pick_box))
				 )
	)
)

;******************************************************************************************************************************************

(defun c:Layer_Field_MLeader ( / point_picked ss_picked ss_index mleader_basepoint picked_entity command_is_cancelled)
	(while (and
				(not command_is_cancelled)
				(or (null (setq point_picked (vl-catch-all-apply 'getpoint (list "\nУкажите точку на примитиве для копирования слоя(ёв): ")))) t)
				(cond
					(
						(null (setq ss_picked (cp_select point_picked)))
							t
					)
					(
						(vl-catch-all-error-p point_picked)
							(princ "\nОтмена")
							(setq command_is_cancelled t)
							(setq picked_entity nil)
					)
					(
						t
							(setq ss_index 0
								  mleader_text ""
							)
							(repeat (sslength ss_picked)
								(setq current_entity (ssname ss_picked ss_index)
									  mleader_text (strcat mleader_text
																  "%<\\AcObjProp Object(%<\\_ObjId "
																   (itoa (vla-get-objectid (vlax-ename->vla-object current_entity)))
																  ">%).Layer>%"
;																   (vla-get-layer (vlax-ename->vla-object current_entity))
																   " [" (substr (vla-get-objectname (vlax-ename->vla-object current_entity)) 5) "]"
																  "\\P"
														  )
									  ss_index (1+ ss_index)
								)
							)
							(vl-cmdf "_.mleader" "_none" (setq mleader_basepoint point_picked)
												 "_none" (getpoint mleader_basepoint "\nПоложение полки выноски: ")
;												 mleader_text
												 ""
							)
							(vla-put-textstring (vlax-ename->vla-object (entlast)) mleader_text)
    						(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
							t
					)
				)
			)
	)
	(princ)
)

;******************************************************************************************************************************************

Последний раз редактировалось koMon, 29.06.2021 в 15:22.
koMon вне форума  
 
Непрочитано 29.06.2021, 11:19
#56
posetitel


 
Регистрация: 16.10.2013
Сообщений: 220


работает, только хотелось бы, чтобы можно было выбирать несколько полилиний, когда они накладываются друг на друга, выноска показала бы какие полилинии наложены
posetitel вне форума  
 
Непрочитано 29.06.2021, 12:18
#57
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 470
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


хе. Ну циклический выбор в помощь, либо переписывайте (в сторону усложнения) код под выбор ssget'ом вместо entsel и соответствующую обработку полученного набора
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп =выноска+поле

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск