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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Почему не удается получить доступ к свойствам точек Civil 3D

Lisp. Почему не удается получить доступ к свойствам точек Civil 3D

Ответ
Поиск в этой теме
Непрочитано 27.09.2016, 10:19 #1
Lisp. Почему не удается получить доступ к свойствам точек Civil 3D
Kirill_Ja
 
Мурманск
Регистрация: 28.07.2008
Сообщений: 208

Есть несколько тысяч точек вдоль кривой (~50). Нужно отрисовать кривую.
Точки - объекты Civil 3D.
Понятно, что вручную это делать - мазохизм.
Получаем свойства Easting и Northing из точек и потом (command "_pline" pointlist)
Вот только с получением координат нашла коса на камень.

(setq a (vlax-ename->vla-object (car (entsel))))
#<VLA-OBJECT IAeccPoint 4444d8b8>
_$ (vlax-dump-Object a t)
; IAeccPoint: Èíòåðôåéñ IAeccPoint
; Çíà÷åíèÿ ñâîéñòâ:
; Application (RO) = #<VLA-OBJECT IAeccApplication 45192950>
; Convergence (RO) = -0.00249458
; Description = Civil 3D API: Ïàðàìåòð çàäàí íåâåðíî.
; DescriptionFormat = ""
; DisplayName (RO) = Civil 3D API: Ïàðàìåòð çàäàí íåâåðíî.
; Document (RO) = #<VLA-OBJECT IAeccDocument 21d33800>
; Easting = 337507.0
; Elevation = 102.03
; EntityTransparency = "ÏîÑëîþ"
; FullDescription (RO) = ""
; GridEasting = 337507.0
; GridNorthing = 618568.0
; Handle (RO) = "26AF9"
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 42796a6c>
; LabelRotation = 0.0
; LabelStyle = nil
; Latitude = 0.0975993
; Layer = "C-RAIL-CANT-VIEW-TTBL"
; Linetype = "ByLayer"
; LinetypeScale = 1.0
; Lineweight = -1
; Location = (337507.0 618568.0 102.03)
; Longitude = 0.498004
; Material = "ByLayer"
; Name = ""
; Northing = 618568.0
; Number = 30908
; ObjectID (RO) = 2126347336
; ObjectName (RO) = "AeccDbCogoPoint"
; OwnerID (RO) = 2125888760
; PlotStyleName = "ByLayer"
; ProjectVersion (RO) = Civil 3D API: Ïàðàìåòð çàäàí íåâåðíî.
; RawDescription = ""
; Rotation = 0.0
; Scale (RO) = 1.00033
; ShowToolTip = -1
; Style = nil
; StyleName (RO) = "<íåò>"
; SurveyPoint (RO) = 0
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 21d1ae70>
; Visible = -1
; XYScale = 1.0
; ZScale = 1.0
; Ïîääåðæèâàåìûå ìåòîäû:
; ArrayPolar (3)
; ArrayRectangular (6)
; Copy ()
; Delete ()
; GetBoundingBox (2)
; GetExtensionDictionary ()
; GetUserDefinedPropertyValue (1)
; GetXData (3)
; Highlight (1)
; IntersectWith (2)
; IsReferenceObject ()
; IsReferenceStale ()
; IsReferenceSubObject ()
; IsReferenceValid ()
; Mirror (2)
; Mirror3D (3)
; Move (2)
; Rotate (2)
; Rotate3D (3)
; ScaleEntity (2)
; SetUserDefinedPropertyValue (2)
; SetXData (2)
; TransformBy (1)
; Update ()
T
_$ (vla-get-easting a)
; îøèáêà: no function definition: VLA-GET-EASTING
_$ (VL-LOAD-COM)
_$ (vla-get-easting a)
_$ a
#<VLA-OBJECT IAeccPoint 4444d8b8>
_$ (vla-get-Northing a)
; îøèáêà: no function definition: VLA-GET-NORTHING
_$ (vla-get-GridEasting a)
_$


В смысле no function definition!!???
Autocad Civil 3D 2013 SP2
Win XP 32
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Просмотров: 3403
 
Непрочитано 27.09.2016, 10:21
#2
Кулик Алексей aka kpblc
Moderator

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


Для вертикалок подобный подход не срабатывает. Получай через (vlax-get-property ent "PropertyName") или вообще через ename
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.09.2016, 10:46
#3
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Благодарю. Заработало!)))

----- добавлено через ~4 ч. -----
Вариант с

Код:
[Выделить все]
 (command "_pline")
(mapcar 'command ss)
Работает нереально медленно (меньше 5000 точек за час)
Для создания длинных линий ActiveX быстрее, хотя и заморочный.

Код:
[Выделить все]
 (defun tg_pline_by_pts (/ ss order)

(setq ss
       (mapcar
	 (function (lambda (z)
		     (list (vlax-get-property z "Number")
		           (vlax-get-property z "Easting")
			   (vlax-get-property z "Northing")
			   0) ))
	 (mapcar
	   'vlax-ename->vla-object
	   (VL-REMOVE-IF
	     (function (lambda (x)
			 (or
			   (/= 'ENAME (type x))
			   (/= "AECC_COGO_POINT" (cdr (assoc 0 (entget x))))
			   )))
	     (mapcar 'cadr  (cdr (reverse (ssnamex (ssget)))))))
	 )
      order (vl-sort-i (mapcar 'car ss) '<)
      ss    (mapcar (function (lambda (x) (cdr (nth x ss)))) order)
      );_setq  

(tg_add_polyline ss)
  
);_end defun

(defun tg_add_polyline (pointlist / sarr ms)

(setq ms   (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
      sarr (vlax-safearray-fill
	     (vlax-make-safearray vlax-vbdouble (cons 0 (1- (* 3 (length pointlist)))))
	     (apply 'append pointlist))) 
(vla-AddPolyline ms sarr)
);_defun
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.

Последний раз редактировалось Kirill_Ja, 27.09.2016 в 14:27.
Kirill_Ja вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Почему не удается получить доступ к свойствам точек Civil 3D

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCad Civil 3D. Почему не поворачиваются метки поверхности по направлению увеличения отметок? Kirill_Ja Вертикальные решения на базе AutoCAD 2 17.08.2014 15:42
Lisp. Получить координаты точек 3D тела. Golem-iq LISP 9 06.09.2013 13:38
AutoCad Civil 3D Инструментальная палитра-типы линий, почему не отображаются должным образом? ArtyLight Вертикальные решения на базе AutoCAD 2 17.07.2013 09:54
AutoCAD Civil 3D 2010. Ошибка при создании точек. rassom Вертикальные решения на базе AutoCAD 7 02.11.2011 20:27
Civil 3D 2007. Импорт точек из dwg Airiz Прочее. Программное обеспечение 3 16.09.2009 11:41