357785513 发表于 2012-5-29 07:48:38

画完折断线命令不退出点那边那边被折断,

相信各位都看过折断线,但我们画完折断线后要后动把一边或双折断线的中间剪掉呀,可不可以画完折断线命令不退出点那边那边被剪掉,双折断线点中间中间就被剪掉,

下面是网友供的折断线,这是一个深层次的问题
(defun c:zdx (/ p1 p2 p1x p1y p2x p2y pmx pmy pm p3 p4 p5 p6 last oldcmdecho oldosmode)
(setq oldcmdecho (getvar "cmdecho"))
(setq oldosmode (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq p1 (getpoint "选择折断线的起点:"))
(setq p2 (getpoint "选择折断线的终点:"))
(setq ang (angle p1 p2))
(setq p1x (car p1))
(setq p1y (cadr p1))
(setq p2x (car p2))
(setq p2y (cadr p2))
(setq pmx (/ (+ p1x p2x) 2))
(setq pmy (/ (+ p1y p2y) 2))
(setq pm (list pmx pmy))
(setq p3 (polar pm (- ang (* pi 0.25)) 28.28427))
(setq p4 (polar pm (- (+ pi ang) (* pi 0.25)) 28.28427))
(setq p5 (polar p3 (+ ang ( * 0.5 pi)) 20))
(setq p6 (polar p4 (+ ang (* pi 1.5)) 20))
(command "pline" p2 p5 p3 p4 p6 p1 "")
(setq l_ast (entlast))
(command "copy" l_ast "" p1 (polar p1 (+ ang (* 1.5 pi)) 50))
(setvar "cmdecho" oldcmdecho)
(setvar "osmode" oldosmode)
(princ)
)

Student 发表于 2012-5-29 08:00:40

你要表达的意思,没看明白

xgr 发表于 2012-5-29 08:16:10

这个很容易做。
用COMMAND+TRIM+"F".

szx025 发表于 2012-5-29 08:45:53

;    =============================================
;    |             截断线自动绘制软件            |
;    |             |
;    =============================================
(defun C:zx(/ pt1 pt2 dis x1 pt3 pt4 pt5 pt6 p1 p2 ptt ang ang1 scale)
;;保存系统变量设置
(setq old_OS(getvar "OSMODE")
      old_CMD (getvar "CMDECHO")
       old_OR (getvar "OrthoMode")
    )
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setvar "OrthoMode" 0)
(setq scale (getreal "\nScale<100>:"))
        (if (= scale nil)
                (setq scale 100)
        )
(setq pt1 (getpoint "\nFirst point:"))
(setq pt2 (getpoint pt1 "\nSecond point:"))
(setq ang (angle pt1 pt2))
(setq dis (distance pt1 pt2))
(setq x1 (/ (- dis (* 2 scale)) 2))
        (setq pt3 (polar pt1 ang x1))
        (setq pt4 (polar pt1 ang (+ x1 (* 2 scale))))
        (setq pt5 (polar pt3 (+ ang 1.32582) (* 2.0616 scale)))
        (setq pt6 (polar pt4 (- ang 1.81577) (* 2.0616 scale)))
        (command "pline" pt1 pt2 "")
   (setq ee (entlast))
   (setVar "OrthoMode" 1)
        (setq ptt (getpoint pt2 "\n剪切方向:"))
        (setq ang1 (angle pt2 ptt))
(setq p1 (polar pt1 ang1 100))
(setq p2 (polar pt2 ang1 100))
   (command "_trim" ee "" "f" p1 p2"" "")
(entdel ee)
(command "pline" pt1 "w" "0" "0" pt3 pt5 pt6 pt4 pt2 "")
   ;;恢复系统变量设置
    (setvar "CMDECHO" old_CMD)
    (setvar "OSMODE" old_OS)
    (setvar "OrthoMode" old_OR)
(princ)(princ)
)      

Andyhon 发表于 2012-5-29 09:03:31

原程序应是套用在特定的绘图框架....

Try
...
(setq l_ast (entlast))
(command "copy" l_ast "" p1 (polar p1 (+ ang (* 1.5 pi)) 50))
(command "trim" l_ast (entlast) "" (polar p1 (+ ang (* 1.5 pi)) 25) (polar p2 (+ ang (* 1.5 pi)) 25) "")
(setvar "cmdecho" oldcmdecho)

357785513 发表于 2012-5-29 12:23:54

没有明白二楼楼长的意思

357785513 发表于 2012-5-29 12:54:03

试用了,感觉非常不错,高人,真是高手

357785513 发表于 2012-5-29 12:56:25

没双线点中间那种
双折断线点一中间就被断开了

fawn_lgc 发表于 2012-5-29 17:30:51

没必要这么复杂,用自定义线型就可以实现了,还是整体的。几行程序,甚至不用写程序,直接修改线型就可以了。
我做的特性工具就有这个功能,建议看看。

357785513 发表于 2012-5-29 21:28:56

9楼所言不知所谓
页: [1] 2
查看完整版本: 画完折断线命令不退出点那边那边被折断,