明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2391|回复: 15

[求助]:[0211]如何依据选取的图元图层,作为修剪的依据呢?

  [复制链接]
发表于 2006-2-11 14:12 | 显示全部楼层 |阅读模式

[0211]如何依据选取的图元图层,作为修剪的依据呢?

如何依据选取的图元图层,
作为修剪的依据呢?
烦请各位高手帮忙解答一下,谢谢~

发表于 2006-2-11 15:01 | 显示全部楼层
还不太明白你的意思。你想作为修剪什么样的依据,比如修剪的边界呢还是修剪的对象。
 楼主| 发表于 2006-2-11 16:43 | 显示全部楼层
不好意思没有说清楚.
目前虽然找到 Command:extrim 可以完成,
但是无法选取多数修剪.
且我还要保留相同图层的物件,
附张图说明一下.
烦请各位高手可以解答一下
谢谢~

本帖子中包含更多资源

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

x
发表于 2006-2-11 17:21 | 显示全部楼层

剪切程序执行前锁定该图层

执行之后解锁

 楼主| 发表于 2006-2-12 08:34 | 显示全部楼层
小弟看到另一个程序
但是好像需要修改
烦请帮忙解决一下
谢谢
  1. (defun c:tra5 ()
  2.   (vl-load-com)
  3.   (setq oldosm (getvar "osmode"))
  4.   (setq oldpic (getvar "pickbox"))
  5.   (setq oldcmd (getvar "cmdecho"))
  6.   (setvar "osmode" 0)
  7.   (setvar "pickbox" 1)
  8. (setvar "cmdecho" 0)
  9. (setq flt '((-4 . "<AND")
  10.             (0 . "LWPOLYLINE")
  11.             (8 . "trimall")
  12.             (90 . 4)
  13.             (-4 . "AND>")
  14. ));setq
  15.   (princ "\nSelect all object to trim: ")
  16.   (if (setq ss (ssget flt))
  17.     (progn
  18.       (command "layer" "lock" "trimall" "")
  19.       (setq n 0)
  20.       (repeat (sslength ss)
  21. (setq ename (ssname ss n))
  22. (setq vlaob (vlax-ename->vla-object ename))
  23. (setq vlalist (vlax-get-property vlaob 'Coordinates))
  24. (setq vlalist (vlax-variant-value vlalist))
  25. (setq vlalist (vlax-safearray->list vlalist))
  26. (setq p1 (list (nth 0 vlalist) (nth 1 vlalist)))
  27. (setq p2 (list (nth 2 vlalist) (nth 3 vlalist)))
  28. (setq p3 (list (nth 4 vlalist) (nth 5 vlalist)))
  29. (setq p4 (list (nth 6 vlalist) (nth 7 vlalist)))
  30. (setq p13 (polar p1 (angle p1 p3) 0.1))
  31. (setq p31 (polar p3 (angle p3 p1) 0.1))
  32. (setq p24 (polar p2 (angle p2 p4) 0.1))
  33. (setq p42 (polar p4 (angle p4 p2) 0.1))
  34. (command "trim" ename "" "f" p13 p24 p31 p42 "" "")
  35. (setq n (1+ n))
  36. );repeat
  37.       (command "layer" "unlock" "trimall" "")
  38.       (setvar "osmode" oldosm)
  39.       (setvar "pickbox" oldpic)
  40.       (setvar "cmdecho" oldcmd)
  41. ) ;_ 结束progn
  42. ) ;_ 结束if
  43. (princ));defun
发表于 2006-2-12 13:25 | 显示全部楼层

我运行了一下5楼的程序,挺好用的阿。

不知道楼主要修改成什么样的?

是不是楼主用这个程序“trim”的对象包括多义线、样条曲线、圆弧之类的图元啊,如果是那样的话,出问题是“trim”命令本身的问题不是这个程序的问题。

 楼主| 发表于 2006-2-12 16:01 | 显示全部楼层

谢谢您的解答

我在好好想一下好了~

 楼主| 发表于 2006-2-12 17:20 | 显示全部楼层

 我想我要的是可以在设定我要修剪的参考基准图层,我试著加入以下的程序

但出现 [损坏的 SSGET 列示值]

是否该改成其他方式来将选择集

给带入后续的程序中呢?

烦请帮忙解决一下

谢谢 

(setq en:sel (car (entsel "\n 选取修剪参考基准图层:")))
(setq en:data:0 (cdr (assoc 0 (entget en:sel))))
(setq en:data:8 (cdr (assoc 8 (entget en:sel))))
(setq en:data:90 (cdr (assoc 90 (entget en:sel))))

(setq flt '((-4 . "<AND")(0 . en:data:0)(8 . en:data:8)(90 . en:data:90)
;;(0 . "LWPOLYLINE") ;;图元名称,原式
;;(8 . "trimall") ;;图层名称,原式
;;(90 . 4) ;;顶点数,原式
(-4 . "AND>")
));setq

(setq ss (ssget flt))
(command "layer" "lock" en:data:8 "")

发表于 2006-2-12 20:52 | 显示全部楼层

我修改了一下,另外说一点,你这句写得不对

(setq flt '((-4 . "<AND")(0 . en:data:0)(8 . en:data:8)(90 . en:data:90)
;;(0 . "LWPOLYLINE") ;;图元名称,原式
;;(8 . "trimall") ;;图层名称,原式
;;(90 . 4) ;;顶点数,原式
(-4 . "AND>")
));

应该写成

(setq flt (list '(-4 . "<AND") (cons 0 en:data:0) (cons 8 en:data:8) (cons 90 en:data:90) '(-4 . "AND>")))

本帖子中包含更多资源

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

x
 楼主| 发表于 2006-2-12 22:17 | 显示全部楼层

谢谢您的修正

但如果要再加上,物件的图元或是顶点数目

是否也是可行呢

(setq en:sel (entget (car (entsel "\n 选取修剪参考基准图层:"))))
  (setq en:data:8 (assoc 8 en:sel))
 (setq en:data:90 (assoc 90 en:sel))

(setq    flt (list '(-4 . "<AND")
(cons 0 "LWPOLYLINE")
en:data:8

en:data:90
;;(CONS 90 4)
'(-4 . "AND>")
))

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

本版积分规则

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

GMT+8, 2024-5-3 09:08 , Processed in 0.352506 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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