Command: (vlax-get-property StartPointObj 'OwnerID)
; error: ActiveX Server returned an error: Element not found
不过我喜欢B计划。。。。 它只是无法通过LISP访问。许多属性无法通过该语言访问或几乎无法访问。 可能有以以下内容开头的计划C:
(vla-getInterfaceObject "bla bla bla.18")
我不知道Civil 3D 2010的“布拉布拉布拉”。
我也很不幸。也许是时候开始学习VBA或。网
这是否意味着进入一个新的领域。净口味(即C#、VB等)。。。?
编辑:
也许我已经回答了自己的问题(来自Visual Basic Express 2010的屏幕截图)-
首先。我意识到这个帖子很旧。我为这个问题挣扎了很长一段时间。在我的研究中,我遇到了这个线索。我想我应该透露一些信息。
无论如何,进入管道和结构不是直接的。人们倾向于认为,要获得管道的起始点,应该使用上面列出的代码。从中检索到的对象是Point3D对象,在尝试获取X Y Z时会引起头痛和错误。要读取起点和终点,请使用以下方法:
(setq p0 (vlax-safearray->list (vlax-variant-value (vlax-get-property pipe 'PointAtParam 0))))
或
(setq p1 (vlax-safearray->list (vlax-variant-value (vlax-get-property pipe 'PointAtParam 1))))
要设置起点和终点,可以使用以下命令:
(vlax-invoke-method pipe 'SetStartandEndPoints pnt1 pnt2)
其中,pnt1和pnt2使用(vlax-3d-point)转换
结构中心是一个IAeccPoint对象,有自己的设置和获取X、Y、Z的方法。
我希望这能为访问Civil 3D管道和结构的问题提供一些线索。如果有人感兴趣,我很乐意对此进行更多讨论。
当做
hippe013 如果你只是想要一个反转级别,那么在这里使用这个。只需要在标签的点上有一个文本。选择基准面、基准线、pt,然后选择文本作为答案,多支持。
;Calculates level of a point in cross or long sections
(setvar "cmdecho" 0)
(princ "\n To run just type SRL")
;;-------------------=={ Parse Numbers }==--------------------;;`
;; ;;
;;Parses a list of numerical values from a supplied string. ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;;Arguments: ;;
;;s - String to process ;;
;;------------------------------------------------------------;;
;;Returns:List of numerical values found in string. ;;
;;------------------------------------------------------------;;
(defun LM:ParseNumbers ( s )
(
(lambda ( l )
(read
(strcat "("
(vl-list->string
(mapcar
(function
(lambda ( a b c )
(if
(or
(< 47 b 58)
(and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
(and (= 46 b) (< 47 a 58) (< 47 c 58))
)
b 32
)
)
)
(cons nil l) l (append (cdr l) (list nil))
)
)
")"
)
)
)
(vl-string->list s)
)
)
(defun c:SRL ()
(setq olddimzin (getvar "dimzin"))
(setvar "dimzin" 0)
(if (= dwgscale nil)
(setq dwgscale (/ 1000.0 (getreal "\n enter vertical scale ")))
)
;(setq datum (getreal "\n Enter datum level "))
(setq datum (car (LM:ParseNumbers (cdr (assoc 1 (entget (car (entsel "\nPick datum text"))))))))
(setq test 1)
(setq pt1 (cadr (getpoint "\npick datum")))
(while (= test 1)
(setq pt2 (cadr (getpoint "\npick point")))
(setq dist (/(abs (- pt1 pt2)) dwgscale))
(setq en1 (car (entsel "\nSelect text number:" )))
(if (/= en1 nil)
(progn
(setq tent (entget en1))
(setq a (+ dist datum))
(setq a (rtos a 2 3))
(setq el (subst (cons 1 a) (assoc 1 tent) tent))
(entmod el)
);progn
(princ "\nplease pick again"); else
);if
); while t
(setq el nil
en nil
a nil
en1 nil
test nil)
(setvar "cmdecho" 1)
(setvar "dimzin" olddimzin)
(princ)
) ;ends main defun
页:
1
[2]