明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: zr222333

关于ssget的问题,请教各位牛人

  [复制链接]
发表于 2011-11-9 10:00:50 | 显示全部楼层
你说的这种选择方式是可以做到的,先选择线条,然后获得线条所有顶点,再用SSGET 的F模式来获得相交物体。再继续判断所选物体是否线条,然后递归调用就是了(注意要判断物体是否已经在选择集内)但看了你那个示例图,用这种方式的话不能保证可以选到图框文字之类的物体啊。
另提供给你一个思路,就是根据你图框的大小来判断,你图框大小是一定的,然后根据这个规则来获得内,外框的范围,再按这个范围来选择物体就是了。(比如说如果图框是PL线,你就用SSGET,然后按顶点数为4过滤,再把选择出来的线条计算长和宽就可以知道大小了。如果图框是由LINE组成,就判断线条的长度,长度为长式宽的就是你要选择的图框边了。)
 楼主| 发表于 2011-11-9 12:23:46 | 显示全部楼层
xiaxiang 发表于 2011-11-9 08:24
先定内框和外框,找到内框和外框间的交集即可。楼主为何要替换图框?是翻译要用吗?

不是要替换图框,是要把图框选中后删掉

点评

看来文件中只有一张图纸  发表于 2011-11-9 14:05
 楼主| 发表于 2011-11-9 12:26:56 | 显示全部楼层
Andyhon 发表于 2011-11-8 22:42
Try
(command "Erase" "all" "r" "c" pt1 pt3 "")

试过了,可行,谢谢了!
 楼主| 发表于 2011-11-9 12:33:59 | 显示全部楼层
hb198075 发表于 2011-11-9 10:00
你说的这种选择方式是可以做到的,先选择线条,然后获得线条所有顶点,再用SSGET 的F模式来获得相交物体。再 ...

大哥,我是初学的,你说的方法我知道,就是不知道怎么编程,该用什么代码,劳烦大哥说的具体点。
另:你说的第二种方法不好实现,我的图框大小不是固定的。
发表于 2011-12-8 21:26:41 | 显示全部楼层
本帖最后由 shalei021647 于 2011-12-8 21:29 编辑

楼主,你说的图框大小不一样,是指每个图框的长与宽之比不一样吗,如果楼主所有图框各自的长宽之比一样的话,并且图框外面没有其他的图形的话。有一个方法可以实现哦。就是在用(command "Erase" "all" "r" "c" pt1 pt3 "")这个命令前,先把所有的图框进行一个放大或是缩小,也就是你先制定一个标准图框的大小来确定坐标。如果你的图框外面没有其他的图形,可以用如下的命令把图框的左下角点定为原点

  1. (setvar "cmdecho" 0);;暂时在命令函数运行时关闭回显提示和输入
  2. (command "-layer" "u" "*" "");;解锁所有图层
  3. (command "-layer" "on" "*" "");;打开所有图层
  4. (command "-layer" "t" "*" "");;解冻所有图层
  5. (command "-purge" "a" "" "n");;purg清理无用项目
  6. (command "zoom" "e")
  7. (command "ucs" "w")
  8. (command "move" "all" "" (getvar"extmin") '(0 0 0))
  9. (command "zoom" "e")
  10. (command "ucs" "o" (getvar"extmin"))
  11. (setvar "cmdecho" 1)


然后再对其进行放大或是缩小,因为可以提取到图框的左下角点与右上角点,那么这两个角点X坐标之差就是某个图框的实际长度,用这个长度除以你所制定的标准图框的长度,得到一个比例,然后再全选这个图形,以左下角点为基点,按这个比例进行放大或是缩小,这样的话,你不同的图框就达到了相同的大小了。然后再用(command "Erase" "all" "r" "c" pt1 pt3 "")这个命令去删除图框吧,因为大小相同了,并且都是图框左下角点为原点,所以基本上,pt1与pt3这两个点就是固定的值了,删除图框后,再以原点为基点,全选所有图形,按之前的那个比例的倒数进行放大或是缩小,这样就又恢复到他原来的大小了。
当然这只是在一个图形中这么做,如果你按这个思路写出了所有的命令,那么你再下载一个cad批量处理工具,论坛里面有,那就可以实现对多个图形进行此lisp命令的操作了。呵呵,我也是刚接触lisp,如果楼主需要的话,可以加QQ14583477,帮你研究一下。理论上来说,如果你的所有图形的长宽之比是一样的,并且图框外面没有图形的话,是能够批量实现的。
发表于 2024-6-1 01:16:04 来自手机 | 显示全部楼层
链式选择,直接做不到,后台实现吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:48 , Processed in 0.163539 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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