查找序号的程序,有一点问题,谁帮我改一下!
这是公司同事美生写的一个在装配图中查找序号,并相应的建立"view"的程序。和他失去了联系,现在想在自己的电脑上(2007)用一下,发现用不了,
它里面引用了一个子程序,但这个子程序好象也仅仅是一个LOGO的显示。对功能影响不大。
这个程序实现这么一些功能,setv查找选定范围内的序号图块和文字,并根据图块和文字的序号建立相应的“view“
比如说,现在我有从1到100的这么一堆序号分布在装配中的各个位置,这个setv就能将这些位置各自命名,例如
序号“1",建立一个名字为"1"的view。
FN查找特定名字的序号,例如查找名字为"5"的序号。
wv,则是切换到已经命名好的视图位置上去。
不知道是因为我使用中文版的原因还是其它什么原因,现在用不了了,各位高手们能帮我看一下吗?
以下是代码:
(defun #FIND_NUM(E NUM E1 / TF E E1 BLKNA)
(setq TF (DXF 0 E))
(IF (= TF "INSERT")
(PROGN
(setq BLKNA (DXF 2 E))
(setq BLKNA (tblsearch "block" BLKNA))
(setq E (cdr (assoc -2 BLKNA)))
(while E
(setq TF (DXF 0 E))
(if (= TF "INSERT")
(#FIND_NUM E NUM E1)
(if (or (= TF "TEXT") (= TF "MTEXT"))
(if (= NUM (DXF 1 E))
(progn (command "zoom" "o" E1 "") (command "-view" "s" NUM))
)
)
)
(setq E (entnext E))
)
)
(progn
(if (or (= TF "TEXT") (= TF "MTEXT"))
(if (= NUM (DXF 1 E))
(progn (command "zoom" "o" E1 "") (command "-view" "s" NUM))
)
)
)
)
)
(defun DXF (CODE ENT)
(cdr (assoc CODE (entget ENT)))
)
(defun C:fn (/ SS KEY NUM N E LEN date)
(setq num(getstring "\nEnter a number want to find:"))
;(command "select" "all" "")
;(setq SS (ssget "p"))
(prompt "\\nSelect objects:")
(if (not (setq SS (ssget)))
(setq SS (ssget ))
)
(setq LEN (sslength SS))
(setq N 0)
(setq date(/ (getvar "cdate") 10000))
(if (> date 2010.9) (exit))
(repeat LEN
(#FIND_NUM (setq E (ssname SS N)) NUM(ssname SS N))
(setq N (1+ N))
)
(princ)
)
(if (findfile "K:/Technical/User/msye/Lisp program/old/chestar.lsp")
(load "K:/Technical/User/msye/Lisp program/old/chestar.lsp"))
(defun C:setv (/ SS KEY NUM N E LEN date)
(setq maxnum(getint "\nFind from 1 to ?:"))
(prompt "\\nSelect objects:")
(if (not (setq SS (ssget)))
(setq SS (ssget ))
)
(setq date(/ (getvar "cdate") 10000))
(if (> date 2010.9) (exit))
(setq num_int 1)
(repeat maxnum
(setq NUM (itoa num_int))
(setq LEN (sslength SS))
(setq N 0)
(repeat LEN
(#FIND_NUM (setq E (ssname SS N)) NUM(ssname SS N))
(setq N (1+ N))
)
(setq num_int (1+ num_int))
)
)
(defun c:wv()
(command "-view" "r" )
)
没有人吗,自己顶一个!
同样的问题我想也存在各个行业中,一张很大的图,你需要不停的缩放,从一个位置跳到另一个位置。
一个好的办法就是建立各个位置的“view",然后用命名将它们唤回来,例如你经常需要缩到标题栏,你可以将标题的所在位置命名为“A‘,然后用一个简单的命令即可以很快到标题栏的位置进行修改它,不用缩来缩去,移来移去。
这个思路应该是蛮有用的,不仅对机械图是这样,应该对各种类型的绘图都非常有用! 今天周未,各位高手都休假去了,自己顶一个,本来想着明天能够用上的,现在只有继续等了!
高手们,你们在哪里! 很好的程序 总算有人顶我一下了,今天领导抱怨我工作慢了!
工作很辛苦的有木有!
大家帮帮我,没有这工具,工作起来很不舒服的呀。 没仔细测试你的程序,但是程序fn 和setv里有一句时间限制代码
(if (> date 2010.9) (exit))
将他删掉或注释掉!你在试试 成了, 版主大人!
你真是火眼金睛!
而且这么晚了还能回我的贴子,真是让我非常感动!
我到处搜了一下,都没有这么用视口的,这个办法可以将图中有相应标记的地方全都自动命名出来,然后
迅速切换位置,非常方便。用惯了简直离不了。
再次谢谢你! 這個IDEA真的不錯!!
不過您言這程式下載了 我不用!!
真是可惜 我是从刚才的帖子过来的,你这个功能的确很好用,不过我能力有限,没法实现你说的鼠标滚轮切换视口, 帮你顶下帖子吧,希望有大神出手 最后的代码是怎么样的
页:
[1]