欢迎来到我的博客
Civil 3D开发与应用,欢迎加入QQ群:484124761
AutoCAD开发,欢迎加入QQ群:193522571

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))
  )
)

 

posted @ 2022-06-24 17:29  david96007  阅读(254)  评论(0编辑  收藏  举报