明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2810|回复: 6

[源码] 不能剪切相交线段了

[复制链接]
发表于 2013-11-4 10:34:19 | 显示全部楼层 |阅读模式
;    =============================================
;    |             截断线自动绘制软件            |
;    |             |
;    =============================================
(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)
)      
这是一个能正常执行的画折断线并按指定方向剪切同折断线相交线段的程序,但我在  (entdel ee)语句下面增加如下几语
(setq p1 (polar pt1 ang1 100))
  (setq p2 (polar pt2 ang1 100))
  (setq p3 (polar pt2 ang1 1000))
  (setq p4 (polar pt1 ang1 1000))
  (setq pts (list P1 P2 P3 P4))
  (command"_ERASE"(ssget "WP" pts)"")
程序改为
(defun C:zx(/ pt1 pt2 dis x1 pt3 pt4 pt5 pt6 p1 p2 p3 p4 ptt pts 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))
     (command "_trim" ee "" "f" p1 p2  "" "")
(entdel ee)
  (setq p1 (polar pt1 ang1 100))
  (setq p2 (polar pt2 ang1 100))
  (setq p3 (polar pt2 ang1 1000))
  (setq p4 (polar pt1 ang1 1000))
  (setq pts (list P1 P2 P3 P4))
  (command"_ERASE"(ssget "WP" pts)"")
  (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)
)      
这个程序也能正常执行,但不能剪切同折线相交的线段了,这是为啥


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-11-4 10:50:35 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-11-4 10:55:11 | 显示全部楼层
(command "_trim" ee "" "f" p1 p2  "" "")
这里的p1  p2没有赋值!
发表于 2013-11-4 10:58:34 | 显示全部楼层
  (setq p1 (polar pt1 ang1 100))
  (setq p2 (polar pt2 ang1 100))
建议用截断口垂高加n  mm来定这个100,如果你的坡口大于100,程序会剪切掉截断线本身
发表于 2013-11-4 10:58:56 | 显示全部楼层
应该是不在同一z值的情况
发表于 2013-11-4 11:02:17 | 显示全部楼层
  (setq ptt (getpoint pt2 "\n剪切方向:"))
  (setq ang1 (angle pt2 ptt))
这个角度对吗?应该找ptt在pt1  pt2的垂点,判断ptt在pt1  pt2的哪一侧
 楼主| 发表于 2013-11-4 11:12:55 | 显示全部楼层
谢谢emk的指点

点评

emk
客气了,指点不敢,只是说说自己的思路......  发表于 2013-11-4 11:17
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 04:47 , Processed in 0.185979 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表