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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp расчленить объекты СПДС Extension Autodesk

Lisp расчленить объекты СПДС Extension Autodesk

Ответ
Поиск в этой теме
Непрочитано 28.02.2018, 11:35 #1
Lisp расчленить объекты СПДС Extension Autodesk
fktstv
 
Инженер
 
Регистрация: 20.01.2016
Сообщений: 307

Добрый день.
Прошу помочь чайнику с созданием команды по расчленению объектов СПДС Extension. Возможно ли решить эту задачу средствами LISP?
Код:
[Выделить все]
 
(defun C:SPDS_EXPLODE ( / sel )
(setq sel (ssget "_X" ;[<фильтр>] здесь необходимо создать набор из объектов, созданных в СПДС Extension
          )
      oldqaflags (getvar "qaflags")
)
(setvar "qaflags" 1)
(command "_.EXPLODE" sel "")
(setvar "qaflags" oldqaflags)
(princ)
)
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
Просмотров: 8649
 
Непрочитано 02.03.2018, 15:46
#2
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


ExplodeAllProxy?
skkkk вне форума  
 
Автор темы   Непрочитано 02.03.2018, 16:20
#3
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Нет, нужно разбить объекты в текущем чертеже с помощью LISP не выгружая сам СПДС. Может быть как-то использовать VLA? Моих скромных познаний, к сожалению, не хватает в данном вопросе. Пока удалось только выяснить что при создании объектов СПДС в чертеже появляется словарь "Siberia" как выделить объекты, связанные с ним?
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 03.03.2018, 00:00
#4
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


А обычный _.EXPLODE может взрывать объекты СПДС? Сам не пользуюсь - не знаю. Постараюсь помочь "по фотографии".
Пока не могу смекнуть, чем нам тут поможет "Сибирь", но есть надежда на пару иных зацепок.
Что появится в командной строке при вводе каждого из двух нижеприведенных выражений с последующим выбором объекта СПДС?
Код:
[Выделить все]
(entget (car (entsel)))
Код:
[Выделить все]
(vlax-dump-object (vlax-ename->vla-object (car (entsel))) T)
skkkk вне форума  
 
Автор темы   Непрочитано 03.03.2018, 19:23
#5
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Да, обычный _.EXPLODE на машине с установленным СПДС может взорвать его объекты.
Код:
[Выделить все]
Команда: (entget (car (entsel)))
Выберите объект: ((-1 . <Имя объекта: 7ffff705ab0>) (0 . "MULTILEADER") (330 . 
<Имя объекта: 7ffff7039f0>) (5 . "223") (100 . "AcDbEntity") (67 . 0) (410 . 
"Model") (8 . "_Текст") (6 . "Continuous") (100 . "AcDbMLeader") (270 . 2) (300 
. "CONTEXT_DATA{") (40 . 1.0) (10 1395.85 689.698 0.0) (41 . 2.5) (140 . 2.5) 
(145 . 0.0) (174 . 0) (175 . 0) (176 . 0) (177 . 0) (290 . 1) (304 . "1") (11 
0.0 0.0 1.0) (340 . <Имя объекта: 7ffff705a20>) (12 1395.85 689.698 0.0) (13 
1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . 
-1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 
0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) 
(296 . 0) (110 1387.39 663.949 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 
0) (302 . "LEADER{") (290 . 1) (291 . 1) (10 1397.76 689.698 0.0) (11 -1.0 0.0 
0.0) (90 . 0) (40 . 1.0) (304 . "LEADER_LINE{") (10 1387.39 663.949 0.0) (91 . 
0) (170 . 1) (92 . -1056964608) (340 . <Имя объекта: 0>) (171 . -2) (40 . 0.0) 
(341 . <Имя объекта: 0>) (93 . 0) (305 . "}") (271 . 0) (303 . "}") (272 . 9) 
(273 . 9) (301 . "}") (340 . <Имя объекта: 7ffff705160>) (90 . 33939440) (170 . 
1) (91 . -1056964608) (341 . <Имя объекта: 7ffff703940>) (171 . -2) (290 . 0) 
(291 . 0) (41 . 1.0) (342 . <Имя объекта: 7ffff705a50>) (42 . 2.5) (172 . 2) 
(343 . <Имя объекта: 7ffff705a20>) (173 . 0) (95 . 0) (174 . 1) (175 . 0) (92 . 
-1073741824) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) 
(293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 
9))
Код:
[Выделить все]
Команда: (vl-load-com)

Команда: (vlax-dump-object (vlax-ename->vla-object (car (entsel))) T)

Выберите объект: ; ISiberiaPositionalLeader: ISiberiaPositionalLeader Interface
; Значения свойств:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00000001400c7e28>
;   ArrowHeadSize = 2.5
;   ArrowHeadType = 0
;   ContentsPosition = (1396.76 689.698 0.0)
;   ContentsRotation = 0.0
;   Document (RO) = #<VLA-OBJECT IAcadDocument 00000000259e1ed0>
;   Handle (RO) = "223"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0000000030bea428>
;   Layer = "_Текст"
;   Linetype = "Continuous"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   MaskBackground = -1
;   Material = "ByLayer"
;   Name (RO) = "1"
;   ObjectID (RO) = 42
;   ObjectID32 (RO) = 42
;   ObjectName (RO) = "AcDbMLeader"
;   OverallScale = 1.0
;   OwnerID (RO) = 43
;   OwnerID32 (RO) = 43
;   PlotStyleName = "ByLayer"
;   Style = "Позиционная выноска"
;   TextAlignment = 0
;   TextHeight = 2.5
;   TextStyle = "GOST-2.304_Type-B_italic"
;   Text_1 = "1"
;   Text_2 = ""
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 0000000030be3be0>
;   Visible = -1
; Поддерживаемые методы:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
T
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 04.03.2018, 10:50
#6
Кулик Алексей aka kpblc
Moderator

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


По-моему, это дампы обычных объектов ACAD, и SPDS Ext тут ни при чем.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.03.2018, 13:37
#7
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
о-моему, это дампы обычных объектов ACAD, и SPDS Ext тут ни при чем.
Не совсем так. Для сравнения приведу дамп обычного млидера, созданного без участия SPDS Extension:

Код:
[Выделить все]
Команда: (vlax-dump-object (vlax-ename->vla-object (car (entsel))) T)

Выберите объект:
; IAcadMLeader2: Интерфейс мультивыносок AutoCAD
; Значения свойств:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140bc7e28>
;   ArrowheadBlock = ""
;   ArrowheadSize = 3.0
;   ArrowheadType = 0
;   BlockConnectionType = 0
;   BlockScale = 1.0
;   ContentBlockName = ""
;   ContentBlockType = 6
;   ContentType = 2
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000024f23400>
;   DogLegged = 0
;   DoglegLength = 8.0
;   EntityTransparency = "Послою"
;   Handle (RO) = "52D"
;   HasExtensionDictionary (RO) = -1
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000003ae0af28>
;   LandingGap = 2.0
;   Layer = "_Текст"
;   LeaderCount (RO) = 1
;   LeaderLineColor = #<VLA-OBJECT IAcadAcCmColor 000000003ae0f960>
;   LeaderLinetype = "ByBlock"
;   LeaderLineWeight = -2
;   LeaderType = 1
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   ObjectID (RO) = 44
;   ObjectID32 (RO) = 44
;   ObjectName (RO) = "AcDbMLeader"
;   OwnerID (RO) = 43
;   OwnerID32 (RO) = 43
;   PlotStyleName = "ByLayer"
;   ScaleFactor = 0.0
;   StyleName = "СПДС"
;   TextAttachmentDirection = 0
;   TextBackgroundFill = 0
;   TextBottomAttachmentType = 0
;   TextDirection = 5
;   TextFrameDisplay = 0
;   TextHeight = 3.0
;   TextJustify = 1
;   TextLeftAttachmentType = 3
;   TextLineSpacingDistance = 5.0
;   TextLineSpacingFactor = 1.0
;   TextLineSpacingStyle = 1
;   TextRightAttachmentType = 3
;   TextRotation = 0.0
;   TextString = "1"
;   TextStyleName = "GOST-2.304_Type-B_italic"
;   TextTopAttachmentType = 0
;   TextWidth = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000003ae0ada0>
;   Visible = -1
; Поддерживаемые методы:
;   AddLeader ()
;   AddLeaderLine (2)
;   AddLeaderLineEx (1)
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBlockAttributeValue (1)
;   GetBlockAttributeValue32 (1)
;   GetBoundingBox (2)
;   GetDoglegDirection (1)
;   GetExtensionDictionary ()
;   GetLeaderIndex (1)
;   GetLeaderLineIndexes (1)
;   GetLeaderLineVertices (1)
;   GetVertexCount (1)
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   RemoveLeader (1)
;   RemoveLeaderLine (1)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetBlockAttributeValue (2)
;   SetBlockAttributeValue32 (2)
;   SetDoglegDirection (2)
;   SetLeaderLineVertices (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
T
Как видно, ; IAcadMLeader2: Интерфейс мультивыносок AutoCAD /= ; ISiberiaPositionalLeader: ISiberiaPositionalLeader Interface . Мне кажется, это хорошая зацепка и нам остается только отфильтровать объекты использующие Siberia, в чем я и прошу помощи.
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 04.03.2018, 14:24
#8
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от fktstv Посмотреть сообщение
Мне кажется, это хорошая зацепка и нам остается только отфильтровать объекты использующие Siberia
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
Setvar вне форума  
 
Непрочитано 04.03.2018, 14:57
1 | #9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от skkkk Посмотреть сообщение
Что появится в командной строке при вводе каждого из двух нижеприведенных выражений с последующим выбором объекта СПДС?
Что показывает нижеприведенное выражение?
Код:
[Выделить все]
(entget (car (entsel)) '("*"))
----- добавлено через ~22 мин. -----
Поставил SPDS ext. Он добавляет расширенные данные.
Цитата:
Команда: (entget (car (entsel)) '("*"))
Выберите объект: ((-1 . <Имя объекта: 7ffff806930>) (0 . "MULTILEADER") (330 . <Имя объекта: 7ffff803a10>) (5 . "36DB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (6 . "Continuous") (100 . "AcDbMLeader") (270 . 2) (300 . "CONTEXT_DATA{") (40 . 1.0) (10 2353.85 613.647 0.0) (41 . 3.5) (140 . 3.0) (145 . 0.0) (174 . 0) (175 . 0) (176 . 0) (177 . 0) (290 . 1) (304 . "nm") (11 0.0 0.0 1.0) (340 . <Имя объекта: 7ffff806760>) (12 2353.85 613.647 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 0.908571) (170 . 1) (90 . -1073741824) (171 . 1) (172 . 5) (91 . -1073741824) (141 . 0.0) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 2317.67 599.292 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . "LEADER{") (290 . 1) (291 . 1) (10 2359.75 613.647 0.0) (11 -1.0 0.0 0.0) (90 . 0) (40 . 1.0) (304 . "LEADER_LINE{") (10 2317.67 599.292 0.0) (10 2325.25 609.247 0.0) (91 . 0) (170 . 1) (92 . -1056964608) (340 . <Имя объекта: 0>) (171 . -2) (40 . 0.0) (341 . <Имя объекта: 0>) (93 . 0) (305 . "}") (271 . 0) (303 . "}") (272 . 9) (273 . 9) (301 . "}") (340 . <Имя объекта: 7ffff805a30>) (90 . 33939184) (170 . 1) (91 . -1056964608) (341 . <Имя объекта: 7ffff803940>) (171 . -2) (290 . 0) (291 . 0) (41 . 1.0) (42 . 3.0) (172 . 2) (343 . <Имя объекта: 7ffff806760>) (173 . 0) (95 . 0) (174 . 1) (175 . 0) (92 . -1073741824) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 1) (-3 ("Siberia" (1000 . "PositionalLeader") (1071 . 768) (1000 . "16f0907f-aa8e-41b8-bec8-dedcccb9e81a") (1071 . 7) (1040 . 0.0) (1071 . 1) (1040 . 1.0) (1040 . 2.5))))
Цитата:
Сообщение от fktstv Посмотреть сообщение
нужно разбить объекты в текущем чертеже с помощью LISP не выгружая сам СПДС.
Командными методами только в текущем пространстве. Особенности initcommandversion здесь
Код:
[Выделить все]
(if (setq ss (ssget "_X" (list '(0 . "MULTILEADER")'(-3 ("Siberia"))(cons 410 (getvar "CTAB")))))
  (progn
    (initcommandversion)
    (command "_.explode" ss "")
    )
  )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 04.03.2018 в 15:19.
VVA вне форума  
 
Автор темы   Непрочитано 05.03.2018, 09:43
#10
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Спасибо уважаемому Мастеру за удочку и море! Теперь заработало. Изящное решение с (initcommandversion).

Цитата:
Сообщение от VVA Посмотреть сообщение
Командными методами только в текущем пространстве.
А не командными можно сразу везде? Особенно интересует возможность расчленить объекты во вхождениях блоков.
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 05.03.2018, 13:46
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от fktstv Посмотреть сообщение
А не командными можно сразу везде?
Нет. Ни родные мультивыноски, ни объекты SPDS Extension не имеют метода Explode (например, как у блоков)
Цитата:
; IAcadBlockReference: Интерфейс AutoCAD для работы с вхождениями блоков.
; Значения свойств:
; Application (RO) = #<VLA-OBJECT IAcadApplication 000000013faf3318>
; Document (RO) = #<VLA-OBJECT IAcadDocument 000000000f0ab798>
....
; Visible = -1
; XEffectiveScaleFactor = 1.0
; XScaleFactor = 1.0
; YEffectiveScaleFactor = 1.0
; YScaleFactor = 1.0
; ZEffectiveScaleFactor = 1.0
; ZScaleFactor = 1.0
; Поддерживаемые методы:
; ArrayPolar (3)
; ArrayRectangular (6)
; ConvertToAnonymousBlock ()
; ConvertToStaticBlock (1)
; Copy ()
; Delete ()
; Explode ()
; GetAttributes ()
; GetBoundingBox (2)
; GetConstantAttributes ()
; GetDynamicBlockProperties ()
; GetExtensionDictionary ()
; GetXData (3)
; Highlight (1)
; IntersectWith (2)
; Mirror (2)
; Mirror3D (3)
; Move (2)
; ResetBlock ()
; Rotate (2)
; Rotate3D (3)
; ScaleEntity (2)
; SetXData (2)
; TransformBy (1)
; Update ()
----- добавлено через ~4 мин. -----
Цитата:
Сообщение от skkkk Посмотреть сообщение
ExplodeAllProxy?
Цитата:
Сообщение от fktstv Посмотреть сообщение
нужно разбить объекты в текущем чертеже с помощью LISP не выгружая сам СПДС
Как вариант
1. DEMADLOAD=0
2. ExplodeAllProxy
3. DEMADLOAD=3
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 05.03.2018, 16:07
#12
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


У меня даже с DEMANDLOAD=0 объекты СПДС Ext все равно не становятся proxy-графикой, соответственно, программа Александра их не обрабатывает.

Добавлено:
С текущим пространством и командными методами кое-как разобрался. Уже почти работает, осталось добиться расчленения объектов во вхождениях блоков, возможно ли это? Если возможно, то как?.
Код:
[Выделить все]
 (defun C:spds_explode	(/ ctabs current-tab ss)
	(setq ctabs (cons "Model" (layoutlist))
	      current-tab (getvar "CTAB")
	) ;_ end of setq
	(repeat (setq i (length ctabs))
	(setvar "CTAB" (nth (setq i (1- i)) ctabs))
		(while (setq ss (ssget	"_X"(list '(-3 ("Siberia"))(cons 410 (getvar "CTAB")))))
			(progn
				(initcommandversion)
				(command "_.explode" ss "")
			) ;_ end of progn
		) ;_ end of while
	) ;_ end of repeat
	(setvar "CTAB" current-tab)
) ;_ end of defun
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004

Последний раз редактировалось fktstv, 05.03.2018 в 16:49.
fktstv вне форума  
 
Непрочитано 05.03.2018, 17:08
1 | #13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Теоретически возможно так
1. Проходимся по таблице описания блоков
2. Проходимся по описанию блока
2.1 Если в примитиве блока есть элемент с расширенными данными -3 "Siberia", то
2.1.1 Запоминаем последний отрисованный притив (entlast)
2.1.2 Вставляем блок в точку 0,0
2.1.3 Взрываем блок
2.1.4 Выбираем объекты SPDS Ext и взрываем их
2.1.5 С помощью (entnext) собираем образованные примитивы после п. 2.1.1
2.1.6 Переопределяем блок (переменная Expert=5)
2.2 Иначе берем следующий блок
----- добавлено через ~3 мин. -----
fktstv, В цикле while конструкция progn не нужна (строки 08 и 11 поста #12)

----- добавлено через ~12 мин. -----
Цитата:
Сообщение от fktstv Посмотреть сообщение
осталось добиться расчленения объектов во вхождениях блоков, возможно ли это?
Еще вариант попробовать поиграться с редактированием блока "по месту". Там вроде как команды срабатывают. См. команда _-Bedit и _Refedit
calling bedit via lisp
Block Edit Lisp
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 06.03.2018, 11:59
#14
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Вот такой получился костыль. Работает ужасно долго, но работает.
Код:
[Выделить все]
 
    (defun tablelist (s / d r);Written By Michael Puckett. 
      (while (setq d (tblnext s (null d)))
        (setq r (cons (cdr (assoc 2 d)) r))
      );_ while
    );_ defun
(defun C:spds_explode	(/ ctabs current-tab ss blk_tbl)
	(setq ctabs (cons "Model" (layoutlist))
	      current-tab (getvar "CTAB")
	) ;_ end of setq
	(repeat (setq i (length ctabs))
		(setvar "CTAB" (nth (setq i (1- i)) ctabs))
		(while (setq ss (ssget	"_X"(list '(-3 ("Siberia"))(cons 410 (getvar "CTAB")))))
				(initcommandversion)
				(command "_.explode" ss "")
		) ;_ end of while
	) ;_ end of repeat
	(setvar "CTAB" "Model")
	(setq blk_tbl (vl-remove-if '(lambda(x)(wcmatch x "`**")) (tablelist "BLOCK")))
	(repeat (setq i (length blk_tbl))
		(command "_.-bedit" (nth (setq i (1- i)) blk_tbl))
		(while (setq ss (ssget	"_X" (list '(-3 ("Siberia")))))
			(initcommandversion)
			(command "_.explode" ss "")
			(setq x 1)
		) ;_ end of while
		(if x
			(progn (initdia 0) (command "_.bclose" "_s") (setq x nil))
			(progn (initdia 0) (command "_.bclose" "_D") (setq x nil))
		) ;_ end of if
	) ;_ end of repeat
(princ "DONE")
) ;_ end of defun
Уважаемый VVA, подскажите, нельзя ли как-то подавить регенерацию после сохранения блока? Так работало-бы хоть чуть-чуть быстрее.
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004

Последний раз редактировалось fktstv, 06.03.2018 в 15:24.
fktstv вне форума  
 
Непрочитано 06.03.2018, 15:02
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от fktstv Посмотреть сообщение
регенерацию после сохранения блока?
REGENMODE?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 06.03.2018, 15:40
#16
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Немного поправил #14.
При установке
Цитата:
Сообщение от VVA Посмотреть сообщение
REGENMODE
равным нулю, при закрытии блока возникает еще один лишний диалог, его не загасить (initdia 0).
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 06.03.2018, 18:18
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Как вариант попробуй еще EXPERT=5 и QAFLAGS=5? 6? ...
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 06.03.2018, 19:52
#18
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


Цитата:
Сообщение от VVA Посмотреть сообщение
попробуй еще EXPERT=5 и QAFLAGS=5? 6? ...
Попробовал, все равно происходит регенерация.

Команда: REGENMODE
Новое значение REGENMODE <1>: 0
Команда: Qaflags
Новое значение QAFLAGS <0>: 5
Команда: EXPERT
Новое значение EXPERT <0>: 5
Команда: _.-BEDIT
Имя блока или [?]: 123
Выполняется регенерация модели.
Команда: _.BCLOSE
Выполняется регенерация модели.
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 18.03.2018, 21:34
#19
posetitel


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


А есть возможность встроить запуск команды в меню СПДС Extension Autodesk ?
Отдельную кнопку на панели автокада создавать не хочется, логичнее команда смотрелась бы в меню самого СПДСа
posetitel вне форума  
 
Автор темы   Непрочитано 22.03.2018, 09:25
1 | #20
fktstv

Инженер
 
Регистрация: 20.01.2016
Сообщений: 307


1. В поле 1 выберите фал адаптации, соответствующий установленному СПДС extesion
2. В поле 2 нажмите кнопку "создание новой команды
3. Заполните поле 3, макрос на запуск лиспа будет иметь следующий вид: ^C^C(if (= spds_explode nil)(Load(findfile "spds_explode.lsp")));spds_explode;
4. Перетащите созданную команду в меню СПДС
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 85
Размер:	232.6 Кб
ID:	200442  
__________________
Все, казалось бы, просто, но на самом деле это не так - В. В. Горев, том 1, стр. 338 - М. 2004
fktstv вне форума  
 
Непрочитано 22.03.2018, 10:06
#21
posetitel


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


работает. спасибо
posetitel вне форума  
 
Непрочитано 09.04.2018, 16:31
#22
posetitel


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


Где-то встречал, что набираются желающие потестить новую версию СПДСа от аутодеска, но не могу найти ссылку.
Если кто уже тестит, передайте им туда пожелание сделать штатную команду расчленения, а то спустя 5 лет только написали этот лисп.
posetitel вне форума  
 
Непрочитано 16.02.2023, 20:02
#23
jony21


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


Скажите пожалуйста, как разбить СПДС объекты? как у вас получилось?
jony21 вне форума  
 
Непрочитано 21.02.2024, 11:01
#24
posetitel


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


Лисп из темы не работет в новой версии.
Есть стандартная команда, но она очень криво взрывает, например, объекты из листа переносит в модель.
Возможно ли как-то подкорректировать лисп из темы, чтобы он работал и с спдс версии spdsext2020_r3?
posetitel вне форума  
 
Непрочитано 21.02.2024, 18:27
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


выложи для примера файл dwg с объектом spdsext2020_r3
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.02.2024, 08:51
#26
posetitel


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


Прилагаю.
Объект СПДС в модели и на листе. Основная проблема штатного взрывателя - это перенос объектов из листа в модель.
Вложения
Тип файла: dwg
DWG 2013
На_форум.dwg (52.5 Кб, 8 просмотров)
posetitel вне форума  
 
Непрочитано 22.02.2024, 09:51
#27
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от posetitel Посмотреть сообщение
Объект СПДС в модели и на листе.
не нашел ни одного прокси
полилиния - 3
ВЭ - 1
Блок - 1
???
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 22.02.2024, 09:59
#28
posetitel


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


А в этом особенность новой сборки спдса, они что-то там опять намудрили и изменили тип своих объектов.
У меня они отображаются как полилиния.
Ну и еще теперь скорее всего из-за этого не поддерживаются предыдущие версии.
posetitel вне форума  
 
Непрочитано 22.02.2024, 10:11
#29
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от posetitel Посмотреть сообщение
У меня они отображаются как полилиния
тогда зачем взрывать?
если он как не прокся?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 22.02.2024, 10:15
#30
posetitel


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


Потому что хоть он и не прокся, он все равно отображается некорректно, если не установлен модуль.
Для контроля, отпишитесь, получилось ли сместить на чертеже эти объекты, хорошо ли отображается скрытая область за разрывом, можно ли изменить уровень на выноске?
Что точно работает криво - позиционные обозначения на плане, они и отображаются некорректно, и редактировать нельзя
posetitel вне форума  
 
Непрочитано 22.02.2024, 10:22
#31
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
не нашел ни одного прокси
полилиния - 3
ВЭ - 1
Блок - 1
???
demandload чему равен?

----- добавлено через 12 сек. -----
А заодно и proxyshow
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2024, 10:33
#32
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
demandload чему равен?

----- добавлено через 12 сек. -----
А заодно и proxyshow
demandload-3
proxyshow -1


Цитата:
Сообщение от posetitel Посмотреть сообщение
Для контроля, отпишитесь, получилось ли сместить на чертеже эти объекты, хорошо ли отображается скрытая область за разрывом, можно ли изменить уровень на выноске?
получилось ли сместить на чертеже эти объекты-да
хорошо ли отображается скрытая область за разрывом-??? за каким разрывом? там только блок ВЭ и три полилинии
можно ли изменить уровень на выноске- нет там выносок, уровень полилинии меняется
-----------
upd в автокаде аналогично
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 22.02.2024 в 10:44.
doctorraz вне форума  
 
Непрочитано 22.02.2024, 10:49
#33
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Цитата:
Сообщение от posetitel Посмотреть сообщение
А в этом особенность новой сборки спдса, они что-то там опять намудрили и изменили тип своих объектов.
У меня они отображаются как полилиния.
Ну и еще теперь скорее всего из-за этого не поддерживаются предыдущие версии.
Скорее всего теперь объекты спдс - переопределение внешнего вида объекта, в вашем случае, переопределение полилинии
Boxa вне форума  
 
Непрочитано 22.02.2024, 10:53
#34
posetitel


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


Приложил скрин, как это выглядит у меня. Объекты СПДС - черным цветом, Красным цветом показал смещение объекта и редактирование.
Миниатюры
Нажмите на изображение для увеличения
Название: Вид на форум.png
Просмотров: 31
Размер:	15.6 Кб
ID:	261769  
posetitel вне форума  
 
Непрочитано 22.02.2024, 11:16
#35
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
demandload-3
А поставь в 2, перезапусти ACAD и посмотри чего будет. Плюс proxynotice в 1
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2024, 11:51
#36
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А поставь в 2, перезапусти ACAD и посмотри чего будет. Плюс proxynotice в 1
без изменений

----- добавлено через ~13 мин. -----
Цитата:
Сообщение от posetitel Посмотреть сообщение
Приложил скрин
Сохрани в dxf,
Теоретически при след. открытии должны стать "правильными" проксями
Но это конечно не точно
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 22.02.2024 в 12:17.
doctorraz вне форума  
 
Непрочитано 22.02.2024, 12:29
#37
posetitel


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


Не особо что-то изменилось.
doctorraz, ну и судя по предыдущему ответу, объект отображается просто как линия, а не как ломаная с маскировкой и выноска с текстом?
Вложения
Тип файла: zip На_форум.zip (31.5 Кб, 3 просмотров)

Последний раз редактировалось posetitel, 22.02.2024 в 12:37.
posetitel вне форума  
 
Непрочитано 22.02.2024, 12:50
#38
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от posetitel Посмотреть сообщение
объект отображается просто как линия
не просто отображается, но и кады видят его как линию
Нажмите на изображение для увеличения
Название: Image 1.png
Просмотров: 21
Размер:	23.3 Кб
ID:	261775
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 22.02.2024 в 12:57.
doctorraz вне форума  
 
Непрочитано 22.02.2024, 14:16
#39
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от doctorraz Посмотреть сообщение
не просто отображается, но и кады видят его как линию
Может, дело в расширенных данных или словарях объекта, по которым SPDS "узнает своих" и обрабатывает соответственно? А "голому" Акаду на эту инфу начхать, и он обрабатывает объекты SPDS обычным образом.
Сам эту примочку не ставил, не могу проверить.
kp+ вне форума  
 
Непрочитано 22.02.2024, 15:57
| 1 #40
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Цитата:
Сообщение от kp+ Посмотреть сообщение
Может, дело в расширенных данных или словарях объекта, по которым SPDS "узнает своих" и обрабатывает соответственно? А "голому" Акаду на эту инфу начхать, и он обрабатывает объекты SPDS обычным образом.
Сам эту примочку не ставил, не могу проверить.
не может, а точно. я ранее писал как они это сделали.
Вот описание высотной отметки находящейся в модели:
Цитата:
xd10|si12|vr2|nv|cm|spTrue|ah3|dr3|pr3|ht7|tph13.5|tps120984|tpr10|tph22.5|tps220984|tpr20|anTrue|ms0.00100000004749745|vl28.7790676125136|us1|px412.183717551146|py234.049077520425|pz0
красный чвет - очевидно координаты вставки
фиолетовое - значение отметки
синий - множитель для значенияотметки
а своих "узнает" по записи в XData

ЗЫ.
Да... глубина попы поражает... вот почему было все это не реализовать на анонимных блоках, да и кодирование информации об объектах в виде текста, то еще решение...

Последний раз редактировалось Boxa, 22.02.2024 в 16:10.
Boxa вне форума  
 
Непрочитано 22.02.2024, 20:57
#41
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Чем-то напоминает кодировку форматирования в Мтексте, точнее, ее "новую" часть... Там тоже изврат еще тот
kp+ вне форума  
 
Непрочитано 26.02.2024, 09:44
#42
posetitel


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


Парни, добавил объекты в отдельный слой, так проще будет для написания лиспа взрывать объекты СПДС для передачи чертежа подрядчикам?
Вложения
Тип файла: dwg
DWG 2013
На_форум (в одном слое).dwg (52.3 Кб, 7 просмотров)
posetitel вне форума  
 
Непрочитано 26.02.2024, 11:26
#43
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Цитата:
Сообщение от posetitel Посмотреть сообщение
так проще будет для написания лиспа взрывать объекты СПДС для передачи чертежа подрядчикам?
ИМХО, в СПДС должен быть такой инструмент, поищите.
И тут идет речь о "взрыве" объектов, а о восстановление внешнего вида объектов на основе данных в словарях.
Реверсить чужую разработку, то еще удовольствие...
Boxa вне форума  
 
Непрочитано 26.02.2024, 11:32
#44
posetitel


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


Уважаемый Boxa, речь идет именно о расчленить. Даже тема так называется. Стандартные средства есть, но они работают некорректно, об этом тоже в теме я писал.
posetitel вне форума  
 
Непрочитано 26.02.2024, 11:45
| 1 #45
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Цитата:
Сообщение от posetitel Посмотреть сообщение
Уважаемый Boxa, речь идет именно о расчленить
Вы не понимаете, там НЕЧЕГО расчленять =)
Там просто полилиния с дополнительными текстовыми данными, что вы хотите ВЗОРВАТЬ?
Boxa вне форума  
 
Непрочитано 26.02.2024, 11:50
#46
posetitel


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


Ну я не знаю, как корректнее назвать это действие, но нужно сделать чтобы объекты отображались как набор примитивов и были доступны для редактирования у тех, у кого модуль не установлен. А не были просто одной полилинией.
posetitel вне форума  
 
Непрочитано 26.02.2024, 14:09
#47
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 470


У меня "голый АКАД" видит три полилинии (если не считать Рамку и Штамп, конечно).
Две - в пространстве Листа, одну - в Модели.
Их, конечно, можно "взорвать" - получим три отрезка...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 26.02.2024, 14:27
#48
posetitel


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


В сообщении 34 я показал, как это выглядит, если СПДС установлен.
Точно также будет выглядеть, если "взорвать", "расчленить" стандартными средствами СПДСа, только объекты из листа переедут в модель.
posetitel вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp расчленить объекты СПДС Extension Autodesk

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SPDS CS пропадают объекты спдс при создании блока eugenmax ПО от CSoft 1 28.03.2014 07:42
Интеграция Autodesk СПДС в AutoCAD 2012 bolotov Прочее. Программное обеспечение 24 07.01.2013 20:22
СПДС объекты не закрашены Paveldoc Прочее. Программное обеспечение 2 22.08.2012 10:35
Исчезли объекты СПДС из чертежа metalirk AutoCAD 3 27.05.2011 13:06
LISP Отфильтровать выбранные объекты по признаку. KEO LISP 2 20.01.2010 11:32