找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2271|回复: 17

[求助] [求助]:求助LISP编程:已知范围线,怎样打开相应图形

[复制链接]
发表于 2008-2-22 23:22:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我的F盘下有一文件夹:资料,资料文件夹里有很1:500的图,也就是边长250 X 250 的。图纸名称类似西南角坐标,如一图纸西南角坐标为X:90250,Y:71750,那么图纸名称就是90257175.dwg

现在我在CAD里面画一红线,能不能实现:我红线所涉及的1:500图自动调出来呢?(我经常先画红线,然后再查坐标调图,这样好烦啊大哥)
请各位帮忙,我将感激不尽!

补充:
不好意思没有讲清楚,那我再说说:
我有一红线,现在想把红线范围内的1:500的地形图加进来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-2-23 13:35:53 | 显示全部楼层
需求不清楚!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-23 15:18:49 | 显示全部楼层
需求不清楚阿,每有办法下手
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-23 16:57:44 | 显示全部楼层
我知道他的意思。需求也很简单。编程也完全能达到。只是没有时间,思路讲一下,知道的人帮忙编下了。
1。确定红线图所占的坐标范围,可提取左上角和右下角的坐标。便可知道4个角的坐标
2。通过左上角纵坐标除以250取整再乘以250,便可求得左上角图幅的X坐标。同样可求得Y坐标。
3。通过右下角纵坐标除以250取整再乘以250,便可求得右下角图幅的X坐标。同样可求得Y坐标。
4。通过求出左上角和右下角两幅图的坐标范围后便可通过每幅图250*250尺寸大小求出红线图所占的图幅了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-23 23:26:10 | 显示全部楼层
补充:
不好意思没有讲清楚,那我再说说:
我有一红线,现在想把红线范围内的1:500的地形图加进来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-25 21:07:50 | 显示全部楼层
根据范围求文件名表,可以做到。不过不是规划专业,不知道规律——告诉eachy,这里有个温柔mm在等他——编程,也许他就来:)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-26 00:11:34 | 显示全部楼层
"——编程" 纯属多余,应去掉!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-26 22:13:47 | 显示全部楼层
最初由 cy956 发布
[B]根据范围求文件名表,可以做到。不过不是规划专业,不知道规律——告诉eachy,这里有个温柔mm在等他——编程,也许他就来:))) [/B]


大哥,那就麻烦你做个简单的程序让我学学呢?
比如鼠标一点击某位置,计算此位置是哪幅1:500图的范围,就把那幅图插入进来?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-27 23:06:28 | 显示全部楼层
最初由 温柔女神 发布
[B]

比如鼠标一点击某位置,计算此位置是哪幅1:500图的范围,就把那幅图插入进来?[/B]

有点明白你的意思了,我可以试试,请稍等时日。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-28 10:07:58 | 显示全部楼层
1。用(vla-getboundingbox求红线矩形范围。如果要求红线通过范围,可能要逐块验证。
2。用下面的函数求第一个地块名称,分xy求,然后除以10再strcat。
3。逐个地块调入。



  1. (defun cy_jw2(sz jd / sz1);;;sz对jd退位,jd>0    如1.2->1,-0.9->-1
  2.   (if (equal jd 0)
  3.     (setq sz1 sz)(progn
  4.     (setq n(/ sz jd 1.0))       
  5.     (if  (equal (fix n) n)
  6.       (setq sz1 sz)
  7.       (if (> n 0)
  8.         (setq sz1 (* jd (fix n)))
  9.         (setq sz1 (* jd (fix (1- n))))
  10.       )
  11.     )
  12.   ) )sz1
  13. )

  14. (cy_jw2 90230 250)

  15. (cy_jw2 -90230 250)
  16. (cy_jw2 0 250)


  17. _$
  18. 90000
  19. _$
  20. -90250
  21. _$
  22. 0
  23. _$

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-28 22:06:36 | 显示全部楼层
最初由 温柔女神 发布
[B]

比如鼠标一点击某位置,计算此位置是哪幅1:500图的范围,就把那幅图插入进来?[/B]

下面的程序试试看,如果比例不符,可调整insert命令后面的比例因子:


  1.   [FONT=courier new]
  2. (defun c:nn( / dx dy p0 p1 str strx stry x x0 y y0)
  3.   (setvar "osmode" 0)
  4.   (while (setq p1 (getpoint "\n依次点取范围点:"))
  5.     (setq x (car p1) y (cadr p1) dx (rem x 250) dy (rem y 250)
  6.           x0 (- x dx) y0 (- y dy)
  7.           p0 (list x0 y0)
  8.           x0 (fix (/ x0 10)) y0 (fix (/ y0 10))
  9.           strx (itoa x0) stry (itoa y0) str (strcat strx stry)
  10.     )
  11.     (command "insert" str p0 "1" "" "0")
  12.   )
  13.   (princ)
  14. )
  15.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-29 23:18:16 | 显示全部楼层
楼主好程序,我在学习中。
"insert" str p0 "1" "" "0")
后面的"1" "" "0")是X,Y比例和角度的
P0应该是坐标,坐标有点不对,总是放大2倍呢
在学习中——
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-3-1 09:05:24 | 显示全部楼层
最初由 温柔女神 发布
[B]坐标有点不对,总是放大2倍呢
[/B]

能不能再说得具体一点,或举一实例说明应用中出现的问题。
或者将250X250的地形图及红线图各传一个上来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-2 00:05:54 | 显示全部楼层
我不在办公室,没有500的图,我有一张1:2000的,传给你测试。
因为是1:2000的,边长是1000米,
把你的程序改:dx (rem x 1000) dy (rem y 1000)
是不是图纸的原因呢,一样的有这个问题:
比如点击62123,49123,那么插入图纸应该是62004900,
程序选图名是对的,是插入62004900.dwg,但是位置不对,坐标变为两倍,
西南角坐标应该是62000,49000,插入位置是:124000,98000了
最近整理图纸,没有时间深入研究,看你的程序又是对的,我纳闷呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-3-2 10:04:11 | 显示全部楼层
在我的电脑上试过了,没有出现坐标变为两倍的问题啊。
将P0的坐标除以2试试看:

  1.   [FONT=courier new]
  2. (defun c:nn( / dx dy p0 p1 str strx stry x x0 y y0)
  3.   (setvar "osmode" 0)
  4.   (while (setq p1 (getpoint "\n依次点取范围点:"))
  5.     (setq x (car p1) y (cadr p1) dx (rem x 1000) dy (rem y 1000)
  6.           x0 (- x dx) y0 (- y dy)
  7.           p0 (list (/ x0 2) (/ y0 2))
  8.           x0 (fix (/ x0 10)) y0 (fix (/ y0 10))
  9.           strx (itoa x0) stry (itoa y0) str (strcat strx stry)
  10.     )
  11.     (command "insert" str p0 "1" "" "0")
  12.   )
  13.   (princ)
  14. )
  15.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 15:44 , Processed in 0.231806 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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