在一个DWG文件中插入鼠标位置所在的图幅
求助编程:在一个DWG文件中插入鼠标位置所在的图幅(可以连续插入)步骤:
1,打开一幅DWG文件,鼠标在图形周围点击一下,取得XY坐标值
2,根据XY坐标值计算鼠标位置所在图幅(图幅为50CM*50CM),起名规则:A.B-C.D,A,C分别为X,Y坐标整公里数,B,D分别为X,Y坐标值的米数;
比例尺1:500 时B,D的取值:大于等于0小于250时为00,大于等于250小于500时为25,大于等于500小于750时为50,大于等于,750小于1000时为75.
比例尺1:1000时B,D的取值:大于等于0小于500时为00,大于等于500小于,1000时为50.
比例尺1:2000时B,D分别为00
如鼠标坐标值为X85230.233,Y66847.386,比例尺1:500 时图幅名为85.00-66.75,比例尺1:,1000 时图幅名为85.00-66.50,比例尺1:2000 时图幅名,85.00-66.00.
3,以块的形式插入图形,基点为0,0(图块为分解和不分解两种,默认插入所打开DWG文件夹下的的图块。)
(DEFUN C:TT (/ PT FILENAME path scale)
(defun getname (pt scale / X Y XKM A XM YKM YM dimzin)
(setq dimzin (getvar 'dimzin))
(setvar 'dimzin 0)
(setq x (car pt)
y (cadr pt)
xkm (rtos (setq a (fix (* 0.001 y))) 2 0)
xm (substr (rtos (* 0.001 (* (fix (/ (- y (* a 1000)) (* scale 0.5))) (* scale 0.5))) 2 2) 2)
ykm (rtos (setq a (fix (* 0.001 x))) 2 0)
ym (substr (rtos (* 0.001 (* (fix (/ (- x (* a 1000)) (* scale 0.5))) (* scale 0.5))) 2 2) 2)
)
(setvar 'dimzin dimzin)
(strcat xkmxm "-" ykmym)
)
(setq scale (getint "\n 图形比例尺<1:500>"))
(if (null scale) (setq scale 500))
(setq path (getvar 'DWGPREFIX))
(while
(setq pt (getpoint "\n选取点位置:"))
;;;得到文件名
(setq filename (strcat (getname pt scale) ".dwg"))
;;;插入块
(if (setq filename (findfile (strcat path filename)))
(command "insert" filename '(0 0 0) 1 1 0)
)
)
)
建议楼主改用图文解说
纯文字叙述不容易传达应有的图文讯息
贴出来是不就是要让见帖者容易转化理解?.... 本帖最后由 qfkxc 于 2011-9-4 17:52 编辑
功能与帖子http://bbs.mjtd.com/thread-88608-1-5.html相同,只是图幅号取名规则不同。如图所示,打开62.75-80.75,鼠标在图的周围点一下,得到鼠标所在位置XY坐标,根据图幅取名规则计算出鼠标所在位置的图幅号为62.75-81.00,以插入块的方式插入文件名为62.75-81.00.dwg的文件,然后鼠标在其他位置点击下插入相应的图幅。(图中文件结合表是不存在的,只是为了说明加入的)。 多谢GU-XL版主,程序很好用
页:
[1]