Civil 3d 要素线高程缩放
QQ群中有群友提出一个问题:
要素线高程批量缩放10倍,能实现吗?
我的回答是:能!
怎么实现呢?
内部功能貌似不行,
只能自己写代码了。
为了方便使用,
我lisp来实现,
优势:
不用编译,
各版本通用,
不用为升级发愁。
代码分享在此,
有需要的朋友可以下载存为lsp文件,
使用ap命令加载后,
输入命令flscale后选择要素线,
即可将要素线高程放大10倍。
(defun c:Flscale () (princ "\n选择要素线: ") (setq ss (ssget '((0 . "AECC_FEATURE_LINE")))) (setq n (sslength ss)) (setq i 0) (while (< i n) ;;;Get Object from SelectionSet (setq fl (vlax-ename->vla-object (ssname ss i))) ;;;Get All Points (3) | (1)=PI Points (2)=Elevation Points (setq pnts (vlax-safearray->list (vlax-variant-value (vlax-invoke-method fl 'GetPoints 3)) ) ) (setq pCount (length pnts)) (setq j 0) (while (< j pCount) (setq p (list (nth j pnts) (nth (+ j 1) pnts) (* 10 (nth (+ j 2) pnts)) ) ) ;;;Set the Elevation (vlax-invoke-method fl 'SetPointElevation (vlax-3d-point p)) (setq j (+ 3 j)) ) (setq i (+ 1 i)) ) )