我想知道如何使用下面的代码将其编码为VBA。类似于我们在 autocad 中对折线区域所做的一切,以 excel。该命令是通过 Excel 宏发送的。
任何帮助都会很棒。
- (defun c:zm2st (/ *ACAD* C3D C3DDOC LOCATION NTWRK NTWRKS PROD PRODSTR PT STRC STRCNAME STRUCTURES)
- (vl-load-com)
- (setq prod (vlax-product-key))
- (setq prodStr (strcat "AeccXUiPipe.AeccPipeApplication"
- (cond ((vl-string-search "\\R17.0\" prod)
- ".4.0"
- )
- ;;2007
- ((vl-string-search "\\R17.1\" prod)
- ".5.0"
- )
- ;;2008
- ((vl-string-search "\\R17.2\" prod)
- ".6.0"
- )
- ;;2009
- ((vl-string-search "\\R18.0\" prod)
- ".7.0"
- )
- ;;2010
- ((vl-string-search "\\R18.1\" prod)
- ".8.0"
- )
- ;;2011
- ((vl-string-search "\\R18.2\" prod)
- ".9.0"
- )
- ;;2012
- ((vl-string-search "\\R19.0\" prod)
- ".10.0"
- )
- ;;2013
- ((vl-string-search "\\R19.1\" prod)
- ".10.3"
- )
- ;;2014
- (t "")
- )
- )
- )
- (if (and (setq *acad* (vlax-get-acad-object))
- (setq C3D (vla-getinterfaceobject *acad* prodStr))
- (setq C3Ddoc (vla-get-activedocument C3D))
- )
- (progn
- (setq ntwrks (vlax-get c3ddoc 'pipenetworks))
- (setq strcname (getstring "\nStructure name to zoom to: " t))
- (vlax-for ntwrk ntwrks
- (if (not strc)
- (progn
- (vl-catch-all-apply '(lambda ()
- (setq structures (vlax-get ntwrk 'structures))
- (setq strc (vlax-invoke structures 'item strcname))
- )
- '())
- )
- )
- )
- (if strc
- (progn
- (setq location (vlax-get strc 'position))
- (setq pt (list (vlax-get location 'x) (vlax-get location 'y)))
- (command "zoom" "c" pt "40")
- )
- (progn
- (princ (strcat "\nStructure "" strcname "" not found."))
- )
- )
- )
- )
- (princ)
- )
-
-
本帖以下内容被隐藏保护;需要你回复后,才能看到! 游客,如果您要查看本帖隐藏内容请 回复 |