明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1526|回复: 9

[求助]TRIM

[复制链接]
发表于 2008-10-28 14:54:00 | 显示全部楼层 |阅读模式

选择基线,然后用F筛选准备裁掉左边的线,但是有时候怎么会出现这种情况,就是很少的线左边还保留,右边的反而被裁剪掉了,不解啊!!!

这是代码

 (repeat 3
 (command "offset" n ent_LNAME check_point "")
 (setq del_check (entlast)
       n (- n 1)
 )

 (setq point_check1 (cdr (assoc 10 (entget del_check))))
 (setq point_check2 (cdr (assoc 11 (entget del_check))))

 (command "trim" ent_LNAME "" "f" point_check1 point_check2 "" "")
 (command "erase" del_check "")


      )

发表于 2008-10-28 22:24:00 | 显示全部楼层

是不是没有把这些线放到整个屏幕呀

如果实体不在屏幕上显示的话,会有这个问题

 楼主| 发表于 2008-10-29 08:40:00 | 显示全部楼层

你是说待裁剪的线都必须在屏幕上显示着吗?

我看看去

发表于 2008-10-29 09:00:00 | 显示全部楼层

repeat 3次不够就用10次嘛////

呵呵

 楼主| 发表于 2008-10-29 09:18:00 | 显示全部楼层

不是次数的问题啊,一百次也是一样啊,我在裁剪之前 ZOOM E了,也会有这种情况出现

发表于 2008-10-29 18:12:00 | 显示全部楼层

把捕捉关了,试下.

发表于 2008-10-29 19:13:00 | 显示全部楼层

哦。。。

(command "offset" n ent_LNAME "none" check_point "")

(command "trim" ent_LNAME "" "f" "none" point_check1 "none" point_check2 "" "")

发表于 2008-10-29 21:22:00 | 显示全部楼层

把全码贴出来才好研究呀,这么简单的东西还要藏吗?晕,还想别人帮忙,一边去

 楼主| 发表于 2008-10-30 15:30:00 | 显示全部楼层

AMTONNY,sorry 了 这是全码,你帮我看看。。

(defun c:ctt (/      check_point   check_point_x check_point_y
       del_check     del_in   dist  end_point
       end_point1    end_point_x   end_point_y ent_l
       ent_lname     ltline   ltss  n
       p3     p4    point_check1 point_check2
       pt_list     start_angle   start_point start_point1
       start_point_x start_point_y tss  tt
       tt1     tt2
      )
  (command "undo" "be")
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (setq ent_LNAME (car (entsel "\n请选择直线:")))
  (if (= (cdr (assoc 0 (entget ent_LNAME))) "POLYLINE")
    (progn
      (command "explode" ent_LNAME)
      (setq ent_LNAME (entlast))
    )
  )
  (setq ent_L (entget ent_LNAME))


  (setq start_point   (cdr (assoc 10 ent_L))
 end_point     (cdr (assoc 11 ent_L))
 start_point_x (cadr (assoc 10 ent_L))
 start_point_y (caddr (assoc 10 ent_L))
 end_point_x   (cadr (assoc 11 ent_L))
 end_point_y   (caddr (assoc 11 ent_L))
 check_point   (getpoint "\n请选择删减方向:")
 check_point_x (car check_point)
 check_point_y (cadr check_point)
 tt1       (* (- start_point_x check_point_x)
    (- end_point_y check_point_y)
        )
 tt2       (* (- start_point_y check_point_y)
    (- end_point_x check_point_x)
        )
 tt       (- tt1 tt2)
 start_angle   (angle start_point end_point)
  )

  (setq dist (distance start_point end_point))

  (setq ltline (ssget "x"
        '((-4 . "<or")
   (6 . "x3")
   (6 . "x4")
   (6 . "x5")
   (6 . "x6")
   (6 . "x49")
   (6 . "acadgx")
   (6 . "DASHDOTX2")
   (-4 . "or>")
         )
        )
 n      0
  )
  (if ltline
    (repeat (sslength ltline)
      (setq ltss (entget (ssname ltline n)))
      (if (= nil (assoc 48 ltss))
 (progn
   (setq ltss (append
         ltss
         (list (cons 48 0.001))
       )
   )
   (entmod ltss)
 )
      )
      (setq n (+ n 1))
    )
  )

  (command "wipeout" "f" "on")
  (if (> tt 0)
    (progn
      (setq end_point1 (polar end_point start_angle 500))
      (setq start_point1 (polar start_point (+ pi start_angle) 500))
      (setq
 p3 (polar end_point1 (+ start_angle (/ pi 2)) (+ 1000 dist))
      )
      (setq p4 (polar p3 (+ start_angle pi) (+ 1000 dist)))
      (setq pt_list (list start_point1 end_point1 p3 p4)
     n     19.01
      )
      (command "pline" start_point1 end_point1 p3 p4 "c" "zoom" "e")
      (setq del_in (ssget "_WP" pt_list))
      (if del_in
 (progn
   (ssdel ent_LNAME del_in)
   (command "erase" del_in "")
 )

      )
      (entdel (entlast))
      (repeat 20
 (command "offset" n ent_LNAME check_point "")
 (setq del_check (entlast)
       n  (- n 1)
 )

 (setq point_check1 (cdr (assoc 10 (entget del_check))))
 (setq point_check2 (cdr (assoc 11 (entget del_check))))

 (command "trim"      ent_LNAME  ""      "f"
   point_check1   point_check2
   ""      ""
  )
 (command "erase" del_check "")


      )
    )
  )

  (setq ltline (ssget "x"
        '((-4 . "<or")
   (6 . "x3")
   (6 . "x4")
   (6 . "x5")
   (6 . "x6")
   (6 . "x49")
   (6 . "acadgx")
   (6 . "DASHDOTX2")
   (-4 . "or>")
         )
        )
 n      0
  )
  (if ltline
    (repeat (sslength ltline)
      (setq ltss (entget (ssname ltline n)))
      (if (= 0.001 (cdr (assoc 48 ltss)))
 (progn
   (setq ltss (subst
         (cons 48 1)
         (assoc 48 ltss)
         ltss
       )
   )
   (entmod ltss)
 )
      )
      (setq n (+ n 1))
    )
  )
  (command "zoom" "e")
  (setvar "cmdecho" 1)
  (command "undo" "e")
  (princ)
)

 楼主| 发表于 2008-10-30 15:41:00 | 显示全部楼层

carrot1983,加“none”的作用是什么,有什么区别,可以讲讲么?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-21 14:05 , Processed in 0.183925 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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