You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoLISP代码修改协助:移除FM_RM3函数的偏移操作

修改AutoLISP脚本移除偏移操作,直接使用原始多段线坐标

以下是修改后的完整代码,以及关键修改点说明:

修改后的代码

(defun c:FM_RM3
    (/ ss sset layer n en ent itm num fn fh obj pnt elv)

; 选择原始目标多段线
(setq ss (ssget "X" '((0 . "*LWPOLYLINE") (8 . "00---0--FM-RUIMTEDEFV")))) 

; 确保图层0存在(若无需保留可删除此行)
(or (tblsearch "LAYER" "0") (command "_.LAYER" "_New" "0" "")) (setq LAYER "0") 

;start export coordinaten----------

(if ss
   (progn
     (setq itm 0 num (sslength ss))
     ; 直接保存到DWG所在目录,文件名替换为txt格式
     (setq fn (strcat (getvar 'DWGPREFIX) (vl-string-subst "txt" "dwg" (getvar 'DWGNAME))))
     
     (if (/= fn nil)
       (progn
         (setq fh (open fn "w"))
         (while (< itm num)
           (setq en (ssname ss itm))
           (setq ent (entget en))
           (setq obj (cdr (assoc 0 ent)))
           
           (cond
             ((= obj "LWPOLYLINE")
              ; 输出多段线的Handle作为ID
              (princ (cdr (assoc 5 ent)) fh)
              (princ "\n" fh)
              
              ; 处理多段线高程,无高程则默认0.0
              (setq elv (if (cdr (assoc 38 ent)) (cdr (assoc 38 ent)) 0.0))
              
              ; 遍历输出所有顶点坐标
              (foreach rec ent
                (if (= (car rec) 10)
                  (progn
                    (setq pnt (trans (cdr rec) 0 1))
                    (princ (strcat (rtos (car pnt) 2 8) ","
                                    (rtos (cadr pnt) 2 8) ","
                                    (rtos elv 2 8)) fh)
                    (princ "\n" fh)
                  )
                )
              )
             )
             (t nil)
           )
           (setq itm (1+ itm))
         )
        (close fh)
       )
     )
   )
)

;einde export coordinaten----------

(princ)
);;defun

(defun c:ompnl ()
  (c:offsetmultiplepolylinestonewlayer)
  )

(princ "\nFM_RM3 loaded. Type FM_RM3 to run.")
;(princ "\nOffsetMultiplePolylinestoNewLayer loaded. Type OMPNL to run.")
(princ)
(vl-load-com)

关键修改点

  • 移除偏移相关变量:删除了offdist、direction、area1、area2等所有和偏移逻辑相关的局部变量
  • 删除偏移操作代码块:完全移除了原代码中从;start offset multi polylines----------到;einde offset multi polylines----------之间的所有偏移执行逻辑
  • 修改导出数据源:导出坐标时直接读取原始图层00---0--FM-RUIMTEDEFV的多段线,不再依赖偏移生成的图层0多段线
  • 修正ID输出:将原代码中输出偏移后多段线Handle的逻辑,改为输出原始多段线的Handle(把ENTITY替换为当前处理的ent)
  • 移除冗余删除操作:删除了原代码开头和结尾对图层0多段线的erase命令,因为不再生成偏移多段线
  • 简化高程判断:把原代码中冗余的高程判断逻辑简化为一行代码,保持功能不变

内容的提问来源于stack exchange,提问作者Fady Youssef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:25:00