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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. возможно ли использование Lisp в magicad

Lisp. возможно ли использование Lisp в magicad

Ответ
Поиск в этой теме
Непрочитано 11.12.2012, 13:37 #1
Lisp. возможно ли использование Lisp в magicad
Composter
 
Отопление и вентиляция
 
Москва
Регистрация: 31.10.2008
Сообщений: 445

Добрый день.установил magicad . хотел сделать lisp для magicad но не тут то было.
ввожу в командной строке
Код:
[Выделить все]
 (vlax-dump-object (vlax-ename->vla-object (car(entsel))))
мне выдается
Select object: ; IMCExtractAirDevice: IMCExtractAirDevice Interface
; Property values:
; ActiveRoom (RO) = " "
; ActiveStorey (RO) = "1 \"Storey 1\""
; AirDeviceConnectionSizeMM (RO) = "300x300"
; Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140fd7198>
; BottomOfPartFCSMM (RO) = 3500
и так далее не буду всю инфу выкладывать

если написать
Код:
[Выделить все]
 (vla-get-AirDeviceConnectionSizeMM(vlax-ename->vla-object (car(entsel))))
то автокад выдает
Select object: ; error: no function definition:
VLA-GET-AIRDEVICECONNECTIONSIZEMM

если написать
Код:
[Выделить все]
 (vla-get-AirDeviceConnectionSizeMM (RO)(vlax-ename->vla-object (car(entsel))))
то автокад выдает
; error: no function definition: RO

может нужно как то по другому ?
Просмотров: 3151
 
Непрочитано 11.12.2012, 14:06
#2
Кулик Алексей aka kpblc
Moderator

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


Используй vlax-get-property и vlax-put-property или регистрируй соответствующие tlb
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.12.2012, 14:57
#3
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


спасибо,Алексей. получилось. а что означает фраза "регистрируй соответствующие tlb" и где про это можно почитать ?
Composter вне форума  
 
Непрочитано 11.12.2012, 15:39
#4
Кулик Алексей aka kpblc
Moderator

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


Пример работы с tlb можно глянуть, например, в ADOLispLibrary (http://acad.fleming-group.com/Downlo...p/ADOLisp.html):
Код:
[Выделить все]
(vlax-import-type-library
       :tlb-filename ADO_DLLPath :methods-prefix "adom-"
       :properties-prefix "adop-" :constants-prefix "adok-"
      )
Основная проблема - определить имя tlb-файла
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.12.2012, 15:47
#5
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


благодарю
Composter вне форума  
 
Непрочитано 23.11.2018, 14:22
#6
Inferi


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


Всем привет, прошу помощи, может кто разбирался, необходимо получить размер воздуховода или трубы объекта magicad.
При выборе воздуховода:
Код:
[Выделить все]
(setq mc_obj (vlax-ename->vla-object (car (entsel))))
(vlax-dump-object mc_obj)
Нам доступны следующие свойства:
Код:
[Выделить все]
#<VLA-OBJECT IMCDuct 000000004ebb8b08> 
; IMCDuct: IMCDuct Interface
; Значения свойств:
;   AbsorptionSerieName (RO) = ""
;   AbsorptionSerieThicknessMM (RO) = 0
;   ActiveRoom (RO) = " "
;   ActiveStorey (RO) = "1 \"Этаж 1\""
;   Application (RO) = #<VLA-OBJECT IAcadApplication 000000013fea3f10>
;   BottomOfPartFCSMM (RO) = 3375.0
;   CenterOfPartFCSMM (RO) = 3500.0
;   Description = ""
;   Document (RO) = #<VLA-OBJECT IAcadDocument 00000000004922f8>
;   DuctConnectionSize (RO) = 5
;   DuctConnectionSizeSwapped (RO) = 5
;   DuctProductCode (RO) = ""
;   DuctSeries (RO) = 3
;   DuctSystem (RO) = 31
;   EntityTransparency = "ПоСлою"
;   Flow (RO) = "-"
;   Handle (RO) = "96CA"
;   HasExtensionDictionary (RO) = 0
;   HeightLimit (RO) = 0
;   Hyperlink (RO) = ""
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000006e77ae08>
;   IFCGuid (RO) = "1cQ5LtLOfC5Qq6aNgm8p9Y"
;   InsulationSerieDescription (RO) = ""
;   InsulationSerieMaterial (RO) = ""
;   InsulationSerieNationalCode (RO) = ""
;   InsulationSeries (RO) = ""
;   InsulationSerieThicknessMM (RO) = 0
;   InsulationSerieUserCode (RO) = ""
;   Layer = "ОВ_В5.1"
;   LengthMM (RO) = 591
;   Linetype = "CenterLine"
;   LinetypeScale = 1.0
;   Lineweight = 15
;   Material = "ByLayer"
;   NationalCodeHPV (RO) = "ВСН 353-86"
;   ObjectID (RO) = ""
;   ObjectID (RO) = 45
;   ObjectName (RO) = "MAGIPathwaySegment"
;   ObjectStatus = -1
;   OwnerID (RO) = 43
;   P1 (RO) = ""
;   P10 (RO) = ""
;   P11 (RO) = ""
;   P12 (RO) = ""
;   P13 (RO) = ""
;   P14 (RO) = ""
;   P15 (RO) = ""
;   P2 (RO) = ""
;   P3 (RO) = ""
;   P4 (RO) = ""
;   P5 (RO) = ""
;   P6 (RO) = ""
;   P7 (RO) = ""
;   P8 (RO) = ""
;   P9 (RO) = ""
;   PartType (RO) = "Воздуховод"
;   PlotStyleName = "Цвет_7"
;   PV (RO) = ""
;   RunningIndex (RO) = "-"
;   SerieDescription (RO) = "Круглые воздуховоды"
;   SerieMaterial (RO) = "Оцинкованная сталь"
;   SizeIsLocked (RO) = 0
;   SizeIsSwapped (RO) = 0
;   StaticPressure (RO) = "0 Па"
;   SystemLayerVar1 (RO) = "5.1"
;   SystemLayerVar2 (RO) = "ОВ_В"
;   SystemLayerVar3 (RO) = ""
;   SystemLayerVar4 (RO) = ""
;   SystemLayerVar5 (RO) = ""
;   SystemLayerVar6 (RO) = ""
;   SystemUserCode (RO) = "В5.1"
;   TopOfPartFCSMM (RO) = 3625.0
;   TotalPressure (RO) = "0 Па"
;   TotalPressureDrop (RO) = "0 Па"
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000006e77bee0>
;   UserCode (RO) = "Круглые"
;   UserVar1 = ""
;   UserVar2 = ""
;   UserVar3 = ""
;   UserVar4 = ""
;   Velocity (RO) = "-"
;   Visible = -1
;   WidthLimit (RO) = 0
Меня интересует строка DuctConnectionSize, которая совпадает с порядковым номером типоразмера воздуховода.
скачал юзер гайд Using MagiCAD COM Interface: https://www.dropbox.com/s/zkobivwiue...ace_201311.pdf
Получил указатель на com модель magicad:
Код:
[Выделить все]
(setq mc (vlax-get-or-create-object "MagiComSrv.MagiCAD"))
Dump com объекта:
Код:
[Выделить все]
; IMagiCAD201104: IMagiCAD201104 Interface
; Нет свойств
В документации сказано, что далее мы можем пользоваться функциями, есть всего одна строчка на VBA:
Код:
[Выделить все]
mc.selectPart()
Как достучаться до параметра /Project/Ductwork/DuctSerie[]/Size[]/Name, с помощью функции getPartAtt() на лиспе?
Несколько дней уже колдую с вариациями параметров, то возвращает код ошибки, то "0":
Код:
[Выделить все]
(vlax-invoke-method magiCAD 'getPartAtt "" "/Project/Ductwork/DuctSerie[0]/Size[0]/Name" "")
Может кто поможет понять какие атрибуты нужно передавать в getPartAtt(3)?

Последний раз редактировалось Inferi, 26.11.2018 в 15:54.
Inferi вне форума  
 
Непрочитано 28.11.2018, 15:54
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


partHandle - это хендл объекта. На лиспе его можно получить так:
Код:
[Выделить все]
 (cdr (assoc 5 (entget (car (entsel)))))
attrName и attrValue - это какие-то параметры уже из MagiCAD. Если вы пользуетесь MagiCAD, то вам должно быть лучше известно что это может быть.

----- добавлено через ~3 мин. -----
А ещё, неплохо бы получить полный дамп объекта:
(vlax-dump-object mc T)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 28.11.2018, 17:29
#8
Inferi


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


Спасибо за внимание! Я знаю как получить handle объекта автокад, методы объекта я тоже получал в полном дампе, attrName перечислены в документации. Но мне нужно получить свойства проекта magicad. Но я ума не приложу что за третий атрибут attrValue, который сам возвращает значение. Любые мои попытки и вариации заполнения атрибутов выдаю либо коды ошибок, либо "0".
Inferi вне форума  
 
Непрочитано 28.11.2018, 17:50
#9
Кулик Алексей aka kpblc
Moderator

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


Надо искать документацию именно для MagiCAD (и я не уверен, что она есть в свободном доступе)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.11.2018, 13:41
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


http://ventsoft.ru/content/tiekhnich...erzhka-magicad
Цитата:
Имейте в виду, что прямое обращение к нам значительно увеличит скорость решения вашей задачи, чем любые попытки найти нужную информацию в интернет или отрывать от работы ваших коллег.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. возможно ли использование Lisp в magicad

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли использование рабочей арматуры несущих колонн в качестве молниеприемника ? viking1963 Железобетонные конструкции 20 06.10.2016 15:49
Возможно ли использование плит по серии ИЖ-568 как связевых sinner Конструкции зданий и сооружений 3 23.08.2012 16:43
Использование серии для многоэтажных зданий в одноэтажном строительстве. Возможно ли такое? iluxxa Конструкции зданий и сооружений 4 08.07.2012 10:36
Возможно ли использование типового прогона ПРГ60 в качестве колонны ЛАПИДУС2009 Конструкции зданий и сооружений 77 29.06.2009 03:45
Использование команды mtext в lisp gool LISP 2 17.09.2008 12:57