明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3853|回复: 12

[讨论] 利用trim剪矩形内部的问题?不解

  [复制链接]
发表于 2009-11-18 16:10:00 | 显示全部楼层 |阅读模式

 

不解 ,出错的图如下

;---
(defun c:aa ( / ss ssn ptlst ptmid enl)
  (setvar "cmdecho" 0)
  (princ "\n请选择一个矩形:")
  (setq ss (ssget ":E:S" '((0 . "LWPOLYLINE")) ))
  (setq ssn (ssname ss 0))
  (setq ptlst (getplpts ssn))
  (setq  ptmid (mapcar '(lambda (x y) (/ (+ x y) 2.0)) (car ptlst) (caddr ptlst)))     ;中点
  (command "offset" "0.01" ssn ptmid "")
  (setq enl (entlast))
  (setq ptlst (getplpts enl))
  (entdel enl)
  (command "undo" "be")

  (command "trim" ssn "" "f" (car ptlst) (cadr ptlst))
  (command "" "")
  (alert "1")
  (command "trim" ssn "" "f" (cadr ptlst) (caddr ptlst))
  (command "" "")
  (alert "2")
  (command "trim" ssn "" "f" (caddr ptlst) (cadddr ptlst))
  (command "" "")
  (alert "3")
  (command "trim" ssn "" "f" (cadddr ptlst) (car ptlst))
  (command "" "")
  (alert "4")

  (command "undo" "e")

  (setvar "cmdecho" 1)
  (princ)
  )

;---


;;;************************************
;;;返回polyline的点表
;;;调用参数形式 (  多义线图元名 )
;;;************************************
(defun getplpts (pl / mark pts ver1 i ee pt)
 (if (= "POLYLINE" (cdr (assoc 0 (entget pl))))
  (progn  ; read points of ployline
   (setq mark "VERTEX"
         i    0
         ver1 (entnext pl)
   )
   (while (= "VERTEX" mark)
    (setq pts (append pts (list (cdr (assoc 10 (entget ver1))))))
    (setq ver1 (entnext ver1)
          i    (1+ i)
    )
    (setq mark (cdr (assoc 0 (entget ver1))))
   )
  )
  (progn  ; read points of lwployline
   (setq ee (entget pl))
   (foreach pt ee
    (if (= 10 (car pt))
     (setq
      pts (append
           pts
           (list (append (cdr pt) (list (cdr (assoc 38 ee)))))
          )
     )
    )
   )
  )
 )
 pts
)
;;;

 

本帖子中包含更多资源

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

x
发表于 2009-11-18 16:34:00 | 显示全部楼层
关闭捕捉试一下
 楼主| 发表于 2009-11-18 16:35:00 | 显示全部楼层
liu_kunlun发表于2009-11-18 16:34:00关闭捕捉试一下

错误依然,请下载附件测试

发表于 2009-11-18 18:08:00 | 显示全部楼层

错误估计出在(command "offset" "0.01" ssn ptmid "")

0.01 这里,这个数据应当由当前视图的像素转换为图形单位

发表于 2009-11-18 19:36:00 | 显示全部楼层

“高级用户”的这个程序功能较弱,我这有一个强力矩形框内修剪工具。

以下为源程序,需要下载,须有点付出

本帖子中包含更多资源

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

x
发表于 2009-11-18 19:40:00 | 显示全部楼层
我提供的程序可以修剪矩形内的直线、园、圆弧、块、剖面线、多义线等多种类型,功能较强
 楼主| 发表于 2009-11-18 20:22:00 | 显示全部楼层
xianaihua发表于2009-11-18 19:36:00“高级用户”的这个程序功能较弱,我这有一个强力矩形框内修剪工具。50341以下为源程序,需要下载,须有点付出50342

你的程序把框内都炸碎了再修剪,并不是我的要求啊,看我一楼的图片要求

另外,你的程序没必要写那么复杂吧,在我的程序里加个EXPLODE就能实现和你一样的“强力”功能

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-11-20 08:46:00 | 显示全部楼层
caoyin发表于2009-11-18 18:08:00错误估计出在(command \"offset\" \"0.01\" ssn ptmid \"\")0.01 这里,这个数据应当由当前视图的

经多此尝试未果,像素转换为图形单位还请cao版明示
发表于 2009-11-20 09:22:00 | 显示全部楼层
本帖最后由 作者 于 2009-11-20 10:20:29 编辑

认真看了一下,问题:

1.关闭osmode

2.“F”栏选应一次完成,而不是多次 (command "trim".... "f")

(defun c:aa ( / ss ssn ptlst ptmid enl)
  (setvar "cmdecho" 0)
  (princ "\n请选择一个矩形:")
  (setq ss (ssget ":E:S" '((0 . "LWPOLYLINE")) ))
  (setq ssn (ssname ss 0))
  (setq ptlst (getplpts ssn))
  (setq  ptmid (mapcar '(lambda (x y) (/ (+ x y) 2.0)) (car ptlst) (caddr ptlst)))     ;中点
  (command "offset" "0.01" ssn ptmid "")
  (setq enl (entlast))
  (setq ptlst (getplpts enl)
        ptlst (append ptlst (list (car ptlst)))
  )
  (entdel enl)
  (command "undo" "be")
  (command ".trim" ssn "" "f")
  (foreach x ptlst (command x))
  (command "" "")

  (command "undo" "e")
  (setvar "cmdecho" 1)
  (princ)
  )

 楼主| 发表于 2009-11-20 09:46:00 | 显示全部楼层
caoyin发表于2009-11-20 9:22:00认真看了一下,问题:1.关闭osmode2.“F”栏选应一次完成,而不是多次 (command \"trim\".... \"f\")(defun c:aa ( / ss ssn ptlst ptmid enl)  (setvar \"cmdecho\" 0)  (princ \"

错误依然,只是剪错的线有所不同

我之前也如cao版写法,“F”栏选应一次完成,出错,故拆成4次栏选,究其错误,发现(alert "3")时出错

  (command "offset" "0.01" ssn ptmid "")
  (setq enl (entlast))
  (setq ptlst (getplpts enl))
  (entdel enl)
  (command "undo" "be")
  (command "trim" ssn "" "f")
  (foreach item ptlst (command item))
  (command (car ptlst))
  (command "" "")
  (command "undo" "e")

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-5-29 05:46 , Processed in 0.232582 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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