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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Управление IAcadEntity объектом (выноска СПДС) через LISP

Управление IAcadEntity объектом (выноска СПДС) через LISP

Ответ
Поиск в этой теме
Непрочитано 24.10.2018, 11:11
Управление IAcadEntity объектом (выноска СПДС) через LISP
OKJI
 
AutoLISP
 
Харьков
Регистрация: 19.06.2018
Сообщений: 101

Здравствуйте дорогие коллеги!!!
Есть мультивыноска СПДС:

там вроде и свойства и атрибуты есть... а добраться к ним с помощью vlax-get- и vlax-put- или vla-Get и vla-Set способов не могу....
помогите пожалуйста добраться до управления этой выноской...
Если:
Код:
[Выделить все]
 (SETQ obj (ENTLAST))
(SETQ vla_obj (VLAX-ENAME->VLA-OBJECT obj))
(vlax-dump-Object vla_obj t)
>>>
<Имя объекта: 7fffd2e9db0> 
#<VLA-OBJECT IAcadEntity 00000000a7360738> 
; IAcadEntity: Интерфейс AutoCAD для работы со своими объектами.
; Значения свойств:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 000000013fffd910>
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000042a71308>
;   EntityTransparency = "ПоСлою"
;   Handle (RO) = "1A5E223"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000000d1cb6d98>
;   Layer = "0"
;   Linetype = "Continuous"
;   LinetypeScale = 1.0
;   Lineweight = 9
;   Material = "ByLayer"
;   ObjectID (RO) = 132560
;   ObjectID32 (RO) = 132560
;   ObjectName (RO) = "mcsDbObjectNotePosition"
;   OwnerID (RO) = 47363
;   OwnerID32 (RO) = 47363
;   PlotStyleName = "ByLayer"
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000d1cb6730>
;   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 
_$
__________________
Вечность это:
 (while T)

Последний раз редактировалось Кулик Алексей aka kpblc, 24.10.2018 в 11:30.
Просмотров: 4047
 
Автор темы   Непрочитано 24.10.2018, 17:03
#21
OKJI

AutoLISP
 
Регистрация: 19.06.2018
Харьков
Сообщений: 101
Отправить сообщение для OKJI с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
надеюсь, что СПДС у вас уже куплен и используется не только для выносок..
К сожалению кроме выносок и размеров мне негде его использовать...


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
логично - если выноска внутри блока то)
Снаружи я незнаю как выноску связать с блоком(
__________________
Вечность это:
 (while T)
OKJI вне форума  
 
Непрочитано 24.10.2018, 17:13
#22
Сергей812


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


Цитата:
Сообщение от OKJI Посмотреть сообщение
К сожалению кроме выносок и размеров мне негде его использовать...
если не ошибаюсь, годовая подписка 20+ т.р. стоит * количество машин - если такая богатая фирма, то почему не нанять программиста на сделке/подряде?

Цитата:
Сообщение от OKJI Посмотреть сообщение
Снаружи я незнаю как выноску связать с блоком(
ну один вариант уже привел связи. Второй вариант - программная вставка полей при создании выноски (так как нужно связать поля со вставками атрибутов, а не их определениями).
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.10.2018, 17:40
#23
OKJI

AutoLISP
 
Регистрация: 19.06.2018
Харьков
Сообщений: 101
Отправить сообщение для OKJI с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если не ошибаюсь, годовая подписка 20+ т.р. стоит * количество машин - если такая богатая фирма, то почему не нанять программиста на сделке/подряде?
Всякими лицензиями у нас занимается сисадмин... а насчет модернизирования это больше моя головная боль чем директора и тем более сисадмина... я сам напросился немного модернизировать нашу рутинную работу... но что директор что другие лица от этого не сильно в восторге... думают что глупая трата времени ... пока директор еще терпит меня, я пытаюсь чтото модернизировать и автоматизировать...
вот по этому целый день бьюсь над этой проблемой а результата до сих пор нет(((


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну один вариант уже привел связи.
У меня такие команды не прописываются чтобы связать мультилинию...(((
__________________
Вечность это:
 (while T)
OKJI вне форума  
 
Непрочитано 24.10.2018, 18:01
#24
Сергей812


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


Цитата:
Сообщение от OKJI Посмотреть сообщение
У меня такие команды не прописываются чтобы связать мультилинию...(((
мультивыноску.. Так написать их надо, на лиспе же можно получить хэндл вставки блока и работать с расширенными данными примитивов. События в лиспе тоже есть, только реакторами называются. Насколько это все быстро работать...
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.10.2018, 12:43
#25
OKJI

AutoLISP
 
Регистрация: 19.06.2018
Харьков
Сообщений: 101
Отправить сообщение для OKJI с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
еще бы знать - куда вообще идете) Что хотите делать с динблоком - управлять его динамическими параметрами или еще что-то?
для управления дин параметрами есть у меня функция спасибо , я хочу изменить текстовые значения в выноске по типу:
Код:
[Выделить все]
 
(SETQ obj (ENTLAST))
(SETQ vl_sv (ENTGET obj))
(SETQ vl_sv_mod (my-putel vl_sv (CONS 300 "Новое значение выноски") 26))
(ENTMOD vl_sv_mod)
my-putel - функция собственного производства которая заменяет элемент списка на новый элемент в указанном месте:
Код:
[Выделить все]
 (DEFUN my-putel (my_list my_el my_ind / my_list1 i my_el1 my_el_do)
    (SETQ my_list1 my_list)
    (SETQ i 0)
    (SETQ my_el1 (LIST))
    (SETQ my_el_do (LIST))
    (WHILE (< i my_ind)
      (IF	(/= my_el1 nil)
        (SETQ my_el_do (APPEND my_el_do (LIST my_el1)))
      )
      (SETQ my_el1 (CAR my_list1))
      (SETQ my_list1 (CDR my_list1))
      (SETQ i (+ i 1))
    ) ;_ end: WHILE
    (APPEND my_el_do (LIST my_el) my_list1)
  )

вдруг кому пригодится...
__________________
Вечность это:
 (while T)

Последний раз редактировалось OKJI, 25.10.2018 в 12:50.
OKJI вне форума  
 
Непрочитано 25.10.2018, 13:39
#26
Сергей812


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


Цитата:
Сообщение от OKJI Посмотреть сообщение
я хочу изменить текстовые значения в выноске по типу:
мне проще в силу лени использовать стандартные элементы типа мультивыноски (и использовать готовый механизм стилей), чем еще вопросами оформления заниматься вместо акада)
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.10.2018, 16:13
1 | #27
OKJI

AutoLISP
 
Регистрация: 19.06.2018
Харьков
Сообщений: 101
Отправить сообщение для OKJI с помощью Skype™


Хуххххх.... через одно место но сделал сам управляемую выноску от СПДС!!!)))
Код:
[Выделить все]
 (DEFUN okl_sp_vnsk (v_p0 v_txt_1 v_txt_2 / v_nab v_obj vl_sv vl_zam v_poz)
(VL-LOAD-COM)
;||
==>Управление СПДС выноской через LISP<==
Автор: Окл
E-mail: [email protected]
Входные данные:
(SETQ v_p0    (LIST 120 20)
      v_txt_1 "Первая строка 1"
      v_txt_2 "Вторая строка 2"
)
Команда запуска:
(okl_sp_vnsk v_p0 v_txt_1 v_txt_2)
;|
|;
  (VL-CMDF "_insert" (STRCAT "sp_vinoska" "") "_s" 1 v_p0 "")
  (VL-CMDF "_explode" (SSADD (ENTLAST)))
  (SETQ v_nab (SSGET v_p0))
  (SETQ v_obj (SSNAME v_nab 0))
  (SETQ vl_sv (ENTGET v_obj))
  (SETQ vl_zam '(301 . "String1"))
  (SETQ v_poz (VL-POSITION vl_zam vl_sv))
  (SETQ vl_sv (my-putel vl_sv (CONS 300 v_txt_1) (+ v_poz 2)))
  (ENTMOD vl_sv)
  (SETQ vl_sv (ENTGET v_obj))
  (SETQ vl_zam '(301 . "String2"))
  (SETQ v_poz (VL-POSITION vl_zam vl_sv))
  (SETQ vl_sv (my-putel vl_sv (CONS 300 v_txt_2) (+ v_poz 2)))
  (ENTMOD vl_sv)
;||
  (SETQ vl_sv (ENTGET v_obj))
  (SETQ vl_zam2 '(301 . "String3"))
  (SETQ v_txt "Третья строка")
  (IF (SETQ v_poz2 (VL-POSITION vl_zam2 vl_sv))
    (PROGN
      (SETQ vl_sv_mod (my-putel vl_sv (CONS 300 v_txt) (+ v_poz2 2)))
    )
    (SETQ vl_sv_mod (APPEND vl_sv (LIST vl_zam2) (LIST (CONS 300 v_txt))))
  )
  (ENTMOD vl_sv_mod)
;|
|;
  (PRINC)
)
(DEFUN my-putel (my_list my_el my_ind / my_list1 i my_el1 my_el_do)

;;;    (SETQ my_list (LIST "12" "dd" "s2" "2s"))
;;;    (SETQ my_ind 3)
;;;    (SETQ my_el "ÂÕ")

    (SETQ my_list1 my_list)
    (SETQ i 0)
    (SETQ my_el1 (LIST))
    (SETQ my_el_do (LIST))
    (WHILE (< i my_ind)
      (IF	(/= my_el1 nil)
        (SETQ my_el_do (APPEND my_el_do (LIST my_el1)))
      )
      (SETQ my_el1 (CAR my_list1))
      (SETQ my_list1 (CDR my_list1))
      (SETQ i (+ i 1))
    ) ;_ end: WHILE
    (APPEND my_el_do (LIST my_el) my_list1)
  )

ДВГ файл прикладываю)
Вложения
Тип файла: dwg
DWG 2013
упр_СПД_выноска.dwg (79.4 Кб, 11 просмотров)
__________________
Вечность это:
 (while T)

Последний раз редактировалось OKJI, 25.10.2018 в 16:33.
OKJI вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Управление IAcadEntity объектом (выноска СПДС) через LISP

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПДС Graphics. Интеграция с AutoCAD. Нет панелек СПДС Sn4ke ПО от CSoft 40 31.07.2020 11:52
LISP. Как в ActiveX выдернуть координаты полилинии? Как задавать атребуты блока через LISP? wpww LISP 31 16.08.2016 14:17
СПДС 10 CS, при простановке размеров через ВЭ, чертеж не проходит аудит doctorraz ПО от CSoft 20 25.04.2016 12:30
LISP: возможно ли выбрать через ssget рамкой объекты разных типов? cj_lex LISP 5 20.04.2012 10:54
Управление параметром видимости дин. блока через sheetset custom properties Red Nova AutoCAD 12 25.06.2008 13:44