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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как добраться до свойств примитивов AutoCAD Structural Detailing?

Как добраться до свойств примитивов AutoCAD Structural Detailing?

Ответ
Поиск в этой теме
Непрочитано 17.06.2009, 14:07 #1
Как добраться до свойств примитивов AutoCAD Structural Detailing?
AlexV
 
Инженер
 
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,692

Собственно, хотелось бы средствами VBA (или, на худой конец, Lisp ) добраться до зашитых в примитивы ASD свойств (с информацией о массе, типе профиля и т.д.). Собственно, есть предположение, что все это зашито в словарях... Я как-то раньше не работал с Dictionary, поэтому не понимаю, как данные из словарей привязаны к объекту.
Следующий код (после указания профиля мышью) - безрезультатен, EDictionary.count = 0

Код:
[Выделить все]
Dim EDictionary As AcadDictionary
Dim obj As Object
Dim varPoint As Variant
Dim strPrompt As String
strPrompt = "Выбери объехт..."
ThisDrawing.Utility.GetEntity obj, varPoint, strPrompt
Set EDictionary = Obj.GetExtensionDictionary
объектов Dictionary, "рожденных ASD" и входящих в ThisDrawing.Dictionaries, несколько - на вложенном рисунке список..
Но какой из них может содержать данные о конкретных примитивах в пространстве листа, и как их выцепить?

Подключил в references ASD-шные библиотеки .. Единственное, чего пока добился, объявляю переменную класса:
Dim Rb As RbCSMdlProfile, затем
ThisDrawing.Utility.GetEntity obj, varPoint, strPrompt
и
Set Rb = obj,
тогда в свойствах Rb появляется возможность получить свойство "Coordinate" - координаты ключевых точек осевой линии профиля.
Может, кто-то посоветует, в каком направлении копать?


Мда... Пожалуй, на VBA безнадежно (при моем уровне знаний). Хотя библиотеки подключены, в "вба-шном" браузере объектов "ASD - шные" примитивы видны со всеми их свойствами и методами, но создать их в файле чертежа или получить свойства уже созданных не получается..

Миниатюры
Нажмите на изображение для увеличения
Название: 1111.jpg
Просмотров: 250
Размер:	28.3 Кб
ID:	22392  Нажмите на изображение для увеличения
Название: VBAскрин.jpg
Просмотров: 263
Размер:	35.0 Кб
ID:	22497  

__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 22.06.2009 в 08:13.
Просмотров: 7479
 
Непрочитано 09.06.2015, 16:53
#2
kurstep


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


Подскажите пожалуйста, что значит
Цитата:
Подключил в references ASD-шные библиотеки
Где можно скачать данные библиотеки и как ими пользоваться?

----- добавлено через ~24 мин. -----
Хочется попробовать вытащить координаты ключевых точек осевой линии профиля и построить по ним отрезки чтоб потом спокойно считать конструкцию в СКАД, если есть способ сделать это через лисп подскажите пожалуйста
kurstep вне форума  
 
Автор темы   Непрочитано 09.06.2015, 17:38
1 | #3
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от kurstep Посмотреть сообщение
Подскажите пожалуйста, что значит Где можно скачать данные библиотеки и как ими пользоваться?

----- добавлено через ~24 мин. -----
Хочется попробовать вытащить координаты ключевых точек осевой линии профиля и построить по ним отрезки чтоб потом спокойно считать конструкцию в СКАД, если есть способ сделать это через лисп подскажите пожалуйста
Миллион лет назад, когда я еще почерчивал в ASD и пописывал на VBA, я делал утилитку по уничтожению дублирующихся объектов ASD, и вроде как раз конечные координаты профилей в ней и использовались.. Следовательно, возможно и отрезки по этим координатам понастроить.. Библиотеки качать не надо, они при установленном ASD уже имеют место быть, их надо только найти в списке и подключить.. Ну а уж как свойства потом выдоить из объектов, не помню, я действовал методом научного тыка. Ну и я занимался этим безнадежным делом на 32 битной системе в тех версиях ASD, в которых еще поддерживался ВБА, сейчас может уже все поменялось..
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 33
Размер:	27.3 Кб
ID:	151405  
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 09.06.2015, 18:06
1 | #4
Zezza


 
Регистрация: 22.10.2007
Челябинск->Москва<->Бомбей
Сообщений: 857


Цитата:
Сообщение от kurstep Посмотреть сообщение
Хочется попробовать вытащить координаты ключевых точек осевой линии профиля и построить по ним отрезки чтоб потом спокойно считать конструкцию в СКАД, если есть способ сделать это через лисп подскажите пожалуйста
Может извращение предложу, но как вариант - выкинуть в Робот сначала, у них же там связь была с АСД, насколько помнится, а оттуда уже через конвертер Тутанхамона (тут в даунлоадс лежит), в Скад отправить. П.с. я только ЖБ развлекался в АСД, металл в рамках мастер класса пробовал.
Zezza вне форума  
 
Непрочитано 15.06.2015, 19:36
#5
kurstep


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


Цитата:
Сообщение от AlexV Посмотреть сообщение
Библиотеки качать не надо, они при установленном ASD уже имеют место быть, их надо только найти в списке и подключить..
А вы не подскажите где эти библиотеки найти , как именно называется файл этой библиотека?
kurstep вне форума  
 
Непрочитано 16.06.2015, 19:52
#6
kurstep


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


Код:
[Выделить все]
 Public Sub inc()

Dim obj As Object, i As Integer
Dim varPoint As Variant
Dim strPrompt As String
strPrompt = "выбери объект..."
ThisDrawing.Utility.GetEntity obj, varPoint, strPrompt
Dim RbCSM As RbCSMdlProfile
Set RbCSM = obj
Dim varr As Long
 varr = 0
Dim arra As Variant
Set arra = RbCSM.Coordinate(varr)

Stop
RbCSM

End Sub
Получилось загрузить библиотеки ASD, ПЫТАЮСЬ достать координаты, пробую по всякому, но всегда в значении arra "empty" не ясно каким должен быть арумент varr- изветен тоько тип -long
AlexV, ты совсем не помнишь как это у тебя вышло?)

----- добавлено через ~11 мин. -----
Property Coordinate(lIndex As Long) ааа.... может дело в этом, что значит "(lIndex As Long)" это не -аргумет?
kurstep вне форума  
 
Непрочитано 17.06.2015, 21:17
#7
kurstep


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


Сам себе отвечаю), получилось достать координаты через Лисп, работает также как и с полилинией
Код:
[Выделить все]
 (defun far ()
(setq obj (vlax-ename->vla-object (car(entsel))))
(setq temp (vla-get-Coordinate obj 0))
(setq assa (vlax-safearray->list (vlax-variant-value temp)))
)
----- добавлено через ~24 ч. -----
Все доделал, Лисп строит по объектам Профилей ASD отрезки:


Код:
[Выделить все]
 (defun c:asdline (/)
  (Setq actdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq obj (vla-get-ModelSpace actdoc))
  (setq nabor_pr (ssget '((0 . "RBCSMDLPROFILE"))))
  (setq	n  0
	nn (sslength nabor_pr)
  )
  (while (< n nn)
    (setq profil (vlax-ename->vla-object (ssname nabor_pr n)))
    (vla-Addline
      obj
      (vla-get-Coordinate profil 0)
      (vla-get-Coordinate profil 1)
    )
    (setq n (1+ n))
  )
  (princ)
)

Последний раз редактировалось kurstep, 18.06.2015 в 20:59.
kurstep вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как добраться до свойств примитивов AutoCAD Structural Detailing?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Настройка спецификации в AutoCAD Structural Detailing kostik Вертикальные решения на базе AutoCAD 27 07.06.2012 19:18
Новый драйвер для Phantom AutoCAD OLE/ADI Printer. Как? CyberMan AutoCAD 4 26.04.2009 10:19
AutoCAD Structural Detailing, вопрос по армированию Ravl Вертикальные решения на базе AutoCAD 3 27.10.2008 16:46
Как создать массив для группы примитивов в Bricscad? Tonic Программирование 8 19.12.2007 09:22