wedg 发表于 2004-7-26 11:46:00

自动标出

各位大虾,能否帮帮小弟:我现在需要在地面标高一栏中填上地面标高,即点A或点B的标高。能否实现,直接点取A点或B点后,自动在地面标高一栏中填上地面标高的数值?(其数值放置的位置和上一栏数字放置的位置一样)注意:现在此图的比例为:横向1:1000,竖向1:100,如果比例不一样呢?比方说:横向1:500,竖向1:100时呢?

xyp1964 发表于 2004-7-26 13:15:00

应该可以解决


把原图文件(dwg)传上来,对照实际图纸,应该可以解决。

wedg 发表于 2004-7-26 17:47:00

好的!这是原图(文件超过了100K,只好压缩了)。看看原图,其中标尺部分可能每张图纸是不一样的。我想,如果可能的话,是不是在编程的时候,要自定义一根基线?就以标尺下面的一根线为基线,这只是我的想法,具体由你们看看有什么好的办法!

xyp1964 发表于 2004-7-27 00:44:00

本帖最后由 作者 于 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 "&lt;" (rtos def 2) "&gt;: ")<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                               (高程)")


wedg 发表于 2004-7-27 01:26:00

请问,使用方法。在加载程序后,要选择一条基准线,不知道您所指的基准线是哪条线呢?能否作一个动画传上来?且,您所指的:当一张图中有多个剖面时,需先运行“gc0”命令,再运行“gc”命令。此命令的意义指的是什么?

xyp1964 发表于 2004-7-27 13:43:00

高程标高标注方法:


见下图,开始时需确定①标注基线端点②基准线③基准线标高值,以后就可以标任意交点处的标高了。


       

wedg 发表于 2004-7-27 18:57:00

不行啊!我在选择基准线的时候程序提示:


命令: gc


        选择标注基线端点:(我选择了上图中标注基线端点)<BR>        选择一条基准线: ; 错误: no function definition: DXF(在选择基准线的时候就这个样子了)


然后程序退出!<BR>

xyp1964 发表于 2004-7-27 21:54:00

楼主:


最新程序已发送邮箱,再试试!


问题的的根本原因在前面的帖子里已进行了说明和修改!

wedg 发表于 2004-7-28 20:25:00

谢谢,问题基本解决。还有些需要完善的地方已发到你的邮箱!不过,现在你看此图,此图的比例和上图就不一样了!横向为1:500,竖向为1:100

wedg 发表于 2004-7-28 21:57:00

我把原图,发往你的邮箱,你查收看看!
页: [1] 2
查看完整版本: 自动标出