Alan 发表于 2003-11-10 12:08:00

[LISP]我需要一个云形线转换为复线的程序

我想要一个能够直接将所选云形线换成复线的程序
要求其曲率越接近越好
哪位大虾帮我

Alan 发表于 2003-11-14 10:29:00

各位侠就请指点下吧

Alan 发表于 2003-11-15 09:57:00

我曾用CAD的等分功能结合起来,但发现其曲率不能达到要求,而且处理起来比较慢
大侠能否指点一下啊!!!

Alan 发表于 2003-11-17 14:48:00

各位:
   你们真这么狠心,都不搭理一声
   哎。。。。。

龙龙仔 发表于 2003-11-20 08:06:00

;;分细一点也不能达到要求吗?
;;你的思路已对"等分功能",再用MLINE重画即可
;;By 龙龙仔(LUCAS)
;;临时改的,原来是SPLINE TO 3DPOLYLINE
(defun C:SP_TO_ML (/ HOLDECHO HOLDBLIP HOLDOSMODE A AA A1 F EPT SPT LP)
(vl-load-com)
(command "_.undo" "_group")
(setq HOLDECHO (getvar "cmdecho"))
(setq HOLDBLIP (getvar "blipmode"))
(setq HOLDOSMODE (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setvar "osmode" 0)
(while (/= AA "SPLINE")
    (setq A (entsel "\n选取SPLINE: "))
    (setq A1 (car A))
    (setq AA (cdr (assoc 0 (entget A1))))
)
(setq        SPT (vlax-curve-getstartpoint
              (setq F (vlax-ename->vla-object A1))
          )
)
(setq EPT (vlax-curve-getendpoint F))
(setq LP (getint "\n请设定段数/<60>: "))
(if (null LP)
    (setq LP 60)
)
(command "_.UCS" "")
(command "_.divide" A1 (+ LP 1))
(setq A (ssget "p"))
(command "_.MLINE" EPT)
(repeat LP
    (command (cdr (assoc 10 (entget (ssname A (- LP 1))))))
    (setq LP (- LP 1))
)
(command SPT "")
(command "_.matchprop" A1 (entlast) "")
(command "_.erase" A A1 "")
(command "_.UCS" "P")
(setvar "blipmode" HOLDBLIP)
(setvar "osmode" HOLDOSMODE)
(command "_.undo" "_end")
(setvar "cmdecho" HOLDECHO)
(princ)
)

ketxu 发表于 2020-1-4 09:34:55

Thanks for sharing ^^
页: [1]
查看完整版本: [LISP]我需要一个云形线转换为复线的程序