自动标出
各位大虾,能否帮帮小弟:我现在需要在地面标高一栏中填上地面标高,即点A或点B的标高。能否实现,直接点取A点或B点后,自动在地面标高一栏中填上地面标高的数值?(其数值放置的位置和上一栏数字放置的位置一样)注意:现在此图的比例为:横向1:1000,竖向1:100,如果比例不一样呢?比方说:横向1:500,竖向1:100时呢? 应该可以解决把原图文件(dwg)传上来,对照实际图纸,应该可以解决。 好的!这是原图(文件超过了100K,只好压缩了)。看看原图,其中标尺部分可能每张图纸是不一样的。我想,如果可能的话,是不是在编程的时候,要自定义一根基线?就以标尺下面的一根线为基线,这只是我的想法,具体由你们看看有什么好的办法!
本帖最后由 作者 于 2004-7-27 21:36:42 编辑 <br /><br /> 试用程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>;;;高程标高标注
;;;gaocheng.lsp
;;;-- <A href="mailto:XYP@bsedi.com" target="_blank" >XYP@bsedi.com</A><BR>;;;2004.07.27<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>(prompt "\n\r 加载高程标高标注程序。")<BR>(defun c:gc (/ psel psel-x psel-y txt t-txt)<BR> (cmdla0)<BR> (setvar"osmode"39)<BR> (if (= ptext-y nil)<BR> (setq ptext-y (+ (cadr (getpoint "\n\t选择标注基线端点: ")) 3000)));;标注文本基点y坐标<BR> (if (= pjzh-y nil)(setq pjzh-y (CADR (dxf 10 (entget (car(entsel"\n\t选择一条基准线: ")))))));基准线y坐标<BR> (if (= no-jzh nil)(setq no-jzh (ureal 1 "" "输入基准线标高值" no-jzh)))<BR> (while (setq psel (getpoint "\n\t待标注点: "))<BR> (setq psel-x (car psel)<BR> psel-y (cadr psel)<BR> )<BR> (setq txt (rtos (+ (/(- psel-y pjzh-y)10000) no-jzh) 2 3))<BR> (setq pt-txt (list psel-x ptext-y))<BR> (mkla"高程标注"4);;自定义标注层名<BR> (command "text" "j" "mc" pt-txt "4000" "0" txt)<BR> )<BR> (pxyp "GC (高程)")<BR> (cmdla1)<BR> )
;;;画新图<BR>;;;当一张图中有多个剖面时,需先运行“gc0”命令,再运行“gc”命令<BR>(defun c:gc0 (/)<BR> (cmdla0)<BR> (setq ptext-y nil)(princ ptext-y)<BR> (setq pjzh-y nil)(princ pjzh-y)<BR> (setq no-jzh nil)(princ no-jzh)<BR> (gc)<BR> (princ"\n\t恢复系统")<BR> (princ)<BR> (cmdla1)<BR> )<BR> <BR> <BR>(defun ureal (bit kwd msg def / inp)<BR> (if def<BR> (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")<BR> bit (* 2 (fix (/ bit 2)))<BR> )<BR> (setq msg (strcat "\n" msg ": "))<BR> )<BR> (initget bit kwd)<BR> (setq inp (getreal msg))<BR> (if inp inp def)<BR> )
;;; 保存原有系统变量,设置程序运行时的系统变量<BR>(Defun cmdla0 ()<BR> (Setq cmdech (Getvar "Cmdecho")<BR> oom (Getvar "Orthomode")<BR> osm (Getvar "Osmode")<BR> la (Getvar "Clayer")<BR> )<BR> (Setvar "Cmdecho" 0)<BR> (Setvar "Regenmode" 0)<BR>)
;;; 建图层: (mala "层名" 颜色号)<BR>(Defun MKLA (a b)<BR> (If (= (Tblsearch "layer" a) nil)<BR> (Command "layer" "m" a "c" b a "")<BR> (Command "layer" "t" a "s" a "c" b a "")<BR> )<BR>)
;;; 恢复原有系统变量<BR>(Defun cmdla1 ();(/ cmdech LA oom osm)<BR> (Setvar "Cmdecho" cmdech)<BR> (Setvar "Clayer" LA)<BR> (Setvar "Orthomode" oom)<BR> (Setvar "Osmode" osm)<BR> (setvar "regenmode" 1)<BR> (Terpri)<BR> (Princ)<BR>)
;;;* 显示命令简写<BR>(DEFUN PXYP (TXT1)<BR> (SETQ TXT1 (STRCAT "\n\r 程序命令: " TXT1 " -- <A href="mailto:XYP@bsedi.com" target="_blank" >XYP@bsedi.com</A>"))<BR> (PRINC TXT1)<BR> (Princ)<BR>);defun
<FONT style="BACKGROUND-COLOR: #f70909" color=#000000>;;;忘了此句</FONT>
<FONT style="BACKGROUND-COLOR: #e61a1a">(defun dxf (code elist) (cdr (assoc code elist)))</FONT>
(pxyp "GC 或 GC0 (高程)")
请问,使用方法。在加载程序后,要选择一条基准线,不知道您所指的基准线是哪条线呢?能否作一个动画传上来?且,您所指的:当一张图中有多个剖面时,需先运行“gc0”命令,再运行“gc”命令。此命令的意义指的是什么? 高程标高标注方法:
见下图,开始时需确定①标注基线端点②基准线③基准线标高值,以后就可以标任意交点处的标高了。
不行啊!我在选择基准线的时候程序提示:
命令: gc
选择标注基线端点:(我选择了上图中标注基线端点)<BR> 选择一条基准线: ; 错误: no function definition: DXF(在选择基准线的时候就这个样子了)
然后程序退出!<BR> 楼主:
最新程序已发送邮箱,再试试!
问题的的根本原因在前面的帖子里已进行了说明和修改! 谢谢,问题基本解决。还有些需要完善的地方已发到你的邮箱!不过,现在你看此图,此图的比例和上图就不一样了!横向为1:500,竖向为1:100
我把原图,发往你的邮箱,你查收看看!
页:
[1]
2