上午刚好给一网友弄了一个,时间问题,我就直接发上来,供大家改写
 - (defun fz ()
- (setq gj (GET_tile "gj"))
- (setq pd (GET_TILE "pd"))
- (setq zg (GET_TILE "zg"))
- (setq xj (GET_TILE "xj"))
- )
- ;;;临时生成Dcl文件 返回文件名
- (defun Write_Dcl (/ Dcl_File file str)
- (setq Dcl_File (vl-filename-mktemp nil nil ".Dcl"))
- (setq file (open Dcl_File "W"))
- (foreach str
- '("RECT:dialog" "{label=\"管道标注\";"
- ":edit_box {key=\"gj\";label=\"管径:\";value=\"DN300\";}"
- ":edit_box {key=\"pd\";label=\"坡度:\";value=\"2.0%\";}"
- ":edit_box {key=\"zg\";label=\"字高:\";value=\"5.0\";}"
- ":edit_box {key=\"xj\";label=\"线距:\";value=\"5.0\";}"
- "ok_only;}")
- (write-line str file)
- )
- (close file)
- Dcl_File
- )
- (defun C:XX()(c:GXBZ))
- (defun c:GXBZ ()
- (VL-LOAD-COM)
- (setvar "CMDECHO" 0)
- (SETQ DCL_ID (LOAD_DIALOG (setq Dcl_File (Write_Dcl))))
- (vl-file-delete Dcl_File)
- (NEW_DIALOG "RECT" DCL_ID)
- (ACTION_TILE "accept" "(fz) (DONE_DIALOG)")
- (START_DIALOG)
- (UNLOAD_DIALOG DCL_ID)
- (while t
- (if (and
- (setq pt1 (getpoint "\n请选择管道起点:"))
- (setq pt2 (getpoint pt1 "\n请选择管道终点:"))
- )
- (progn
-
- (setq xx (- (car pt2) (car pt1))
- yy (- (cadr pt2) (cadr pt1))
- num (/ yy 1.0 xx)
- str (rtos (* 100 num) 2 1)
- )
- (setq dst (distance pt1 pt2)
- str1 (rtos dst 2 1)
- ;; FIX 1
- dtt (strcat gj " L=" str1 "m i=" pd)
- a1 (angle pt1 pt2)
- a2 (* (/ a1 pi) 180)
- ptt (polar pt1 a1 (/ dst 2))
- pte (polar ptt (* pi 0.5) (atof xj))
- )
- (command "text" "j" "bc" pte (atof zg) a2 dtt)
- ;; FIX2
- )
- )
- )
- (princ)
- )
|