明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2122|回复: 5

求一程序可以自动找出图形所有图元的左下角

[复制链接]
发表于 2010-9-14 17:05:00 | 显示全部楼层 |阅读模式

公司图形文件规定,所有图元的左下角必须在0,0,0。

注意不是当前的窗口,是整个图形; 不是屏幕的左下角,是所有图元的左下角。

 

很多图形一个个转换太慢了,编个程序可以自动转换,但无法取得这个点。

哪位高手能帮忙。(找出所有图元最小的x,y,z值的那个点)

 

我只会lsp,不会用vba,如果lsp中嵌套有vba的函数,能告诉我怎么做才能运行吗。

我的cad环境是2008.

谢!

发表于 2010-9-14 18:27:00 | 显示全部楼层
http://www.google.com/search?as_q=&hl=zh-cn&num=10&btnG=Google+%E6%90%9C%E5%B0%8B&as_epq=%E5%B7%A6%E4%B8%8B%E8%A7%92&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=http%3A%2F%2Fbbs.mjtd.com%2F&as_rights=&safe=images
发表于 2010-9-14 23:55:00 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0


发表于 2010-9-15 06:55:00 | 显示全部楼层

学习!谢谢!(getvar "EXTMIN") 以前不知道。

 楼主| 发表于 2010-9-16 13:36:00 | 显示全部楼层

EXTMIN 根本取不准图形的左下角,大家可以自己试验

 

 楼主| 发表于 2010-9-16 13:47:00 | 显示全部楼层

搜索了2楼的,用了以下程序

(defun rectang_min (/ ss pt_list sn n en pt1 pt2)
    (setq ss (ssget "X"))
    (setq pt_list '())
    (setq sn (sslength ss))
    (setq n -1)
    (repeat sn
 (setq en (ssname ss (setq n (1+ n))))
 (vla-getboundingbox (vlax-ename->vla-object en) 'pt1 'pt2)
 (setq pt_list (cons (vlax-safearray->list pt1) pt_list))
 (setq pt_list (cons (vlax-safearray->list pt2) pt_list))
    )
    (setq pt1 (apply 'mapcar (cons 'min pt_list)))         ;;; 左下角点
;;; (setq pt2 (apply 'mapcar (cons 'max pt_list)))         ;;; 右上角点
;;; (command "rectang" pt1 pt2)
;    (princ)
)

 

对于这个程序,大部分都能够得到左下角坐标。

但对于有些图形程序出错,如图1, 由于工程保密,图形内容已删除,不知道什么原因

有些图不能获得正确的左下角坐标,如图2

 

那个高手能指点以下???!!!

 

感谢呀!

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-10-2 10:25 , Processed in 0.179855 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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