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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как изменить свойство объекта.

LISP. Как изменить свойство объекта.

Ответ
Поиск в этой теме
Непрочитано 14.06.2014, 17:25 #1
LISP. Как изменить свойство объекта.
solo123
 
Регистрация: 19.08.2009
Сообщений: 91

Как изменить свойство ViewportOn (признак включенности видового экрана) объекта например с помощью функции: vlax-put-property

Последний раз редактировалось solo123, 15.06.2014 в 09:39.
Просмотров: 2652
 
Непрочитано 14.06.2014, 22:35
#2
Кулик Алексей aka kpblc
Moderator

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


(vlax-put-property <vla-указатель на объект> <Имя свойства> <Устанавливаемое значение>)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.06.2014, 15:32
#3
solo123


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


Очень хочется посмотреть реальный пример с объектом, а именно с созданным видовым экраном:

(vla-AddPViewport
(vla-get-PaperSpace
(vla-get-ActiveDocument (vlax-get-acad-object))
)
(vlax-3d-point '(100 100 0))
100
100
)

Как сделать его активным?

Последний раз редактировалось solo123, 15.06.2014 в 15:47.
solo123 вне форума  
 
Непрочитано 15.06.2014, 18:10
#4
Кулик Алексей aka kpblc
Moderator

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


Что значит "сделать активным"?
Код:
[Выделить все]
_$ (setq adoc (vla-get-activedocument (vlax-get-acad-object))
      vp   (vla-addpviewport
             (vla-get-block (vla-item (vla-get-layouts adoc) 0)) ;_ end of vla-get-PaperSpace
             (vlax-3d-point '(100 100 0))
             100
             100
             ) ;_ end of vla-addpviewport
      ) ;_ end of setq
#<VLA-OBJECT IAcadPViewport 0000000033926718>
_$ (vlax-dump-Object vp t)
; IAcadPViewport: IAcadPViewport Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140309140>
;   ArcSmoothness = 1000
;   Center = (100.0 100.0 0.0)
;   Clipped (RO) = 0
;   CustomScale = 0.0390106
;   Direction = (0.0 0.0 1.0)
;   DisplayLocked = 0
;   Document (RO) = #<VLA-OBJECT IAcadDocument 000000003326e028>
;   EntityTransparency = "ByLayer"
;   GridOn = -1
;   Handle (RO) = "24B"
;   HasExtensionDictionary (RO) = 0
;   HasSheetView (RO) = 0
;   Height = 100.0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000000387cd108>
;   LabelBlockId = Îøèáêà
;   Layer = "0"
;   LayerPropertyOverrides (RO) = 0
;   LensLength = 50.0
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   ModelView = nil
;   ObjectID (RO) = 42
;   ObjectName (RO) = "AcDbViewport"
;   OwnerID (RO) = 43
;   PlotStyleName = "ByLayer"
;   ShadePlot = 0
;   SheetView = nil
;   SnapBasePoint = (0.0 0.0)
;   SnapOn = 0
;   SnapRotationAngle = 0.0
;   StandardScale = 1
;   StandardScale2 = 1
;   Target = (0.0 0.0 0.0)
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000387cd160>
;   TwistAngle = 0.0
;   UCSIconAtOrigin = -1
;   UCSIconOn = -1
;   UCSPerViewport = -1
;   ViewportOn = 0
;   Visible = -1
;   VisualStyle = 1
;   Width = 100.0
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   Display (1)
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetGridSpacing (2)
;   GetSnapSpacing (2)
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetGridSpacing (2)
;   SetSnapSpacing (2)
;   SetXData (2)
;   SyncModelView ()
;   TransformBy (1)
;   Update ()
Вот доступные свойства и методы для видового экрана. Так что значит "активным"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.06.2014, 20:06
#5
solo123


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


Сделать экран активным, тоесть в нем должно отобразиться пространство модели, если я правильно понимаю, это надо изменить значение свойства ViewportOn?
В ручном режиме, это когда дважды кликаешь в пространстве листа на созданый видовой экран при этом его контур выделяется толстой линией, и в видовом экране начинают отображаться объекты созданые в пространстве модели. Проще говоря включить его.

Последний раз редактировалось solo123, 26.06.2014 в 20:22.
solo123 вне форума  
 
Непрочитано 26.06.2014, 22:42
#6
VVA

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


Цитата:
Сообщение от solo123 Посмотреть сообщение
Проще говоря включить его.
Вариант1
Код:
[Выделить все]
(cond
  ((= (getvar "TILEMODE") 1)(alert "Перейди в пространство листа"))
  ((= (getvar "TILEMODE") 0)
(if (not (equal (getvar "cvport") 1))(command "_.PSPACE"))
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
      vp   (vla-addpviewport ;_Создаем ViewPort
             (vla-get-block (vla-item (vla-get-layouts adoc) (getvar "Ctab"))) ;_ end of vla-get-PaperSpace
             (vlax-3d-point '(100 100 0))
             100
             100
             ) ;_ end of vla-addpviewport
      ) ;_ end of setq
   (vla-put-ViewportOn vp :vlax-true) ;_Включаем
   (vla-put-ActivePViewport vp) ;_Делаем активным - vla
   (if (equal (getvar "cvport") 1)(command "_.MSPACE"));_Перезходим в модель через активный ВЭ
  )
  (t nil)
  )
Вариант2
Код:
[Выделить все]
(cond
  ((= (getvar "TILEMODE") 1)(alert "Перейди в пространство листа"))
  ((= (getvar "TILEMODE") 0)
(if (not (equal (getvar "cvport") 1))(command "_.PSPACE"))
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
      vp   (vla-addpviewport ;_Создаем ViewPort
             (vla-get-block (vla-item (vla-get-layouts adoc) (getvar "Ctab"))) ;_ end of vla-get-PaperSpace
             (vlax-3d-point '(100 100 0))
             100
             100
             ) ;_ end of vla-addpviewport
      ) ;_ end of setq
   (vla-put-ViewportOn vp :vlax-true) ;_Включаем
   (if (equal (getvar "cvport") 1)(command "_.MSPACE"));_Переходим в модель через активный ВЭ
   (setq PortNumber (cdr(assoc 69 (entget(vlax-vla-object->ename vp))))) ;_Узнаем номер ВЭ
   (setvar "CVPORT" PortNumber) ;_Делаем ВЭ с номером PortNumber активным
   )
  (t nil)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.06.2014, 05:49
#7
solo123


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


Спасибо всем. Включить экран и сделать его активным это оказывается разные вещи.
solo123 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как изменить свойство объекта.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Как объявить класс со своими методами и свойствами? LastGraff LISP 27 26.08.2022 15:51
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Lisp. Изменение свойств у ячеек таблицы. Не могу докопаться до vla объекта. Kirzaa LISP 2 21.09.2009 10:32
Ищу способы упрощения работы с XData (расширенными данными) в VBA, Lisp RasRuf LISP 1 29.01.2009 10:55
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19