jschlichter 发表于 2022-7-5 23:22:06

没有这样的运气

Command: (vlax-get-property StartPointObj 'OwnerID)
; error: ActiveX Server returned an error: Element not found

不过我喜欢B计划。。。。

alanjt 发表于 2022-7-5 23:24:54

它只是无法通过LISP访问。许多属性无法通过该语言访问或几乎无法访问。

Smirnoff 发表于 2022-7-5 23:28:32

可能有以以下内容开头的计划C:
 
(vla-getInterfaceObject "bla bla bla.18")
 
我不知道Civil 3D 2010的“布拉布拉布拉”。
 

jschlichter 发表于 2022-7-5 23:33:08

我也很不幸。也许是时候开始学习VBA或。网

BlackBox 发表于 2022-7-5 23:33:53

 
这是否意味着进入一个新的领域。净口味(即C#、VB等)。。。?
 
 
编辑:
 
也许我已经回答了自己的问题(来自Visual Basic Express 2010的屏幕截图)-
 

Hippe013 发表于 2022-7-5 23:38:04

首先。我意识到这个帖子很旧。我为这个问题挣扎了很长一段时间。在我的研究中,我遇到了这个线索。我想我应该透露一些信息。
 
无论如何,进入管道和结构不是直接的。人们倾向于认为,要获得管道的起始点,应该使用上面列出的代码。从中检索到的对象是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

BIGAL 发表于 2022-7-5 23:44:23

如果你只是想要一个反转级别,那么在这里使用这个。只需要在标签的点上有一个文本。选择基准面、基准线、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]
查看完整版本: 使用vlax-3dpoint