CafeJr 发表于 2022-7-5 23:26:43

多重偏移,如何修复

伙计们,
 
我得到了这段代码,要做多次偏移,效果很好,但我需要做一个补充,即最终对象的方向,代码不允许你选择它,每次代码在对象上方绘制偏移线,有可能修复它吗?指示终点偏移线的方向。。。
 
提前感谢。。。
 
(defun c:mo (/ plines ; selection set of polylines
      ext ; extrnal point
      dist ; distance to offset
      poly ; a polyline from plines
      plist ; the list of poly
      del ; polyline to delete
      int ; internal point
      i
      layer)
(command "undo" "begin")
(princ "select polylines")
(setq plines (ssget)
i      0
ext    (getvar "limmax")
dist   (getdist "distance = ")
)
(repeat (sslength plines)
   (setq poly (ssname plines i))
   (setq plist (entget poly))
   (command "offset" dist poly ext "")
   ;(setq del (entlast)
   ;int (polar
   ;(cdr (assoc 10 (entget del)))
   ;(angle
   ;(cdr (assoc 10 (entget del)))
   ;(cdr (assoc 10 plist)))
   ;(* 2 (distance (cdr (assoc 10 plist))
   ;(cdr (assoc 10 (entget del)))))))
   ;(command "offset" dist poly int "")
   ;(entdel del)
   (setq i (1+ i))
)
(command "undo" "end")
(if (= "Y"
(strcase (getstring "\ndelete initial polylines? (Y/N) = "))
   )
   (command "erase" plines "")
)
)

CheSyn 发表于 2022-7-5 23:43:44

未经测试,但应修复问题。我更改了“ext”(添加getpoint)和“dist”(添加)
 

(defun c:mo (/ plines ; selection set of polylines
      ext ; extrnal point
      dist ; distance to offset
      poly ; a polyline from plines
      plist ; the list of poly
      del ; polyline to delete
      int ; internal point
      i
      layer)
(command "undo" "begin")
(princ "select polylines")
(setq plines (ssget)
i      0
ext    (getpoint "\nSelect the offset direction")
dist   (getdist "\ndistance = ")
)
(repeat (sslength plines)
   (setq poly (ssname plines i))
   (setq plist (entget poly))
   (command "offset" dist poly ext "")
   ;(setq del (entlast)
   ;int (polar
   ;(cdr (assoc 10 (entget del)))
   ;(angle
   ;(cdr (assoc 10 (entget del)))
   ;(cdr (assoc 10 plist)))
   ;(* 2 (distance (cdr (assoc 10 plist))
   ;(cdr (assoc 10 (entget del)))))))
   ;(command "offset" dist poly int "")
   ;(entdel del)
   (setq i (1+ i))
)
(command "undo" "end")
(if (= "Y"
(strcase (getstring "\ndelete initial polylines? (Y/N) = "))
   )
   (command "erase" plines "")
)
)

CafeJr 发表于 2022-7-5 23:52:43

 
已测试!。。。谢谢CheSyn!。。。效果很好!!!。。。

the lagman 发表于 2022-7-5 23:58:08

大家好!
有没有办法在上面的代码中添加更改偏移对象层的功能??
提前感谢!

MSasu 发表于 2022-7-6 00:14:20

要更改新创建的多段线的图层(调整蓝色部分以适合您的情况):
...
   (setq plist (entget poly))
   (command "offset" dist poly ext "")
   (command "_CHPROP" (entlast) "" "_LA" "NameOfTargetLayer" "")
...

the lagman 发表于 2022-7-6 00:19:22

 
哇,非常感谢!非常感谢你的帮助!完全按照需要工作!

MSasu 发表于 2022-7-6 00:28:40

不客气!
页: [1]
查看完整版本: 多重偏移,如何修复