apple0423 发表于 2004-7-30 20:26:00

[编程申请]:自动标立面、剖面的标高的小程序

<FONT face=宋体 size=2>最近做一个20多层的建筑,发现标立面剖面的标高真是个大工程,可不可以请高手做一个小程序,可以输入层高、层数等参数后,可自动生成标高,点插入点然后各标高就在自己所标注高度的位置……</FONT>


<FONT face=宋体 size=2>像这样的</FONT>


http://p4.xdcad.net/forum/file_upload/206574_untitled-1%20copy.jpg


<FONT face=宋体 size=2>谢谢大家了</FONT>

xyp1964 发表于 2004-7-31 15:18:00

方法:将压缩文件中的“$bg.dwg”放到路径下,加载lpmbg.lsp程序,运行lpmbg。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>;;;lpmbg.lsp 立剖面标高<BR>;;;* C:LPMBG<BR>;;;-- <A href="mailto:XYP@bsedi.com" target="_blank" >XYP@bsedi.com</A><BR>;;;2004.07.31<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>(prompt "\n\r                                       加载立剖面标高程序。")<BR>;-------------------------------------------<BR>;;;主程序<BR>(DEFUN C:LPMBG (/ pt0 x0 y0 y n)<BR>       (CMDLA0)<BR>       (setvar "osmode"39)<BR>       (MKLA "立剖面标高" 3)<BR>       (WHILE (NOT (SETQ pt0 (getpoint "\n\t确定±0.000标高位置点 : "))))<BR>       (setq H-ceng (ureal 1 "" "层高(m)" h-ceng))<BR>       (setq n-ceng (ureal 1 "" "层数" n-ceng))<BR>       (setvar "osmode"0)<BR>       (command "ucs" "o" pt0)<BR>       (setq y0 0 n 0 pt0 (list 0 0))<BR>       (while (&lt; n (+ 1 n-ceng))<BR>                       (setq y (* (/ y0 1000.0) (GETVAR "DIMLFAC"))<BR>               y (rtos y 2 3)<BR>               )<BR>                       (if        (= y0 0)<BR>                                       (command "INSERT" "$BG" pt0 SC SC "0" "±0.000");$BG为标高图块,可以自定义<BR>                                       (command "INSERT" "$BG" pt0 SC SC "0" y)<BR>                       )<BR>                       (setq n (+ 1 n))<BR>                       (setq y0 (* n 1000.0 h-ceng))<BR>                       (setq pt0 (list 0 y0))<BR>       )<BR>       (command "ucs" "")<BR>       (CMDLA1)<BR>       (pxyp"lpmbg                                       (立剖面标高)")<BR>       )


;;;-------------------------------------------<BR>;;;子程序<BR>;;;<BR>(defun CMDLA0 ()<BR>       (setq cmdech (GETVAR "CMDECHO"))<BR>       (setq oom (getvar "orthomode"))<BR>       (setq osm (getvar "osmode"))<BR>       (SETQ LA (getvar "clayer"))<BR>       (setvar "regenmode" 1)<BR>       (SETVAR "CMDECHO" 0)<BR>       )


;;;<BR>(defun CMDLA1 ()<BR>       (SETVAR "CMDECHO" cmdech)<BR>       (setvar "orthomode" oom)<BR>       (setvar "osmode" osm)<BR>       (setvar "clayer" LA)<BR>       (setvar "regenmode" 1)<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 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 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


;;;<BR>(pxyp"lpmbg                                       (立剖面标高)")


;-------------------------------------------<BR>;;;END

czb203 发表于 2011-11-18 21:09:46

真得很好用啊谢谢

zqb05 发表于 2011-11-22 23:40:32

有点意思啊

注册 发表于 2013-5-11 19:56:55

有点感觉,呵呵

5664491 发表于 2013-8-14 13:28:04

有点意思啊

注册 发表于 2022-11-18 08:55:36

xyp1964 发表于 2004-7-31 15:18
方法:将压缩文件中的“$bg.dwg”放到路径下,加载lpmbg.lsp程序,运行lpmbg。




确定±0.000标高位置点 :
层高(m)<3.00>:

层数<3.00>:
未知命令“0”。按 F1 查看帮助。
未知命令“±0.000”。按 F1 查看帮助。
未知命令“0”。按 F1 查看帮助。
未知命令“3.000”。按 F1 查看帮助。
未知命令“0”。按 F1 查看帮助。
未知命令“6.000”。按 F1 查看帮助。
未知命令“0”。按 F1 查看帮助。
未知命令“9.000”。按 F1 查看帮助。

SdlFreeCAD 发表于 2022-11-26 13:28:39

私信我, 了解详细需求后, 用高级语言实现.{:1_1:}
页: [1]
查看完整版本: [编程申请]:自动标立面、剖面的标高的小程序