- UID
- 249949
- 积分
- 138
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-4-25
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我初学lisp,还不太熟悉,我编的程序单步运行好用,可一整体运行几次就出现错误,
错误: 参数太多
错误: 参数类型错误: stringp nil
程序如下:
(defun 阀门3 (/ save dpath dname file1 filename dcl_id jlname dn br1 br2 bname
block g1x g2x yy g1y g2y gy1 gy2 gd1 gd2 gd3 gd4 gd5 gd6 gd7 gd8 gd9 gd10 gd11 gd12 gd13
gd14 wz1 z1 z4 xx gx1 gx2 se1 tyname tyjbl tyjb ljname ljunit ljxh gx t1 tt tx
ty t2 c1 c1q c2 c2q sp fx fxx sp1 sp2 spx spy sp3 sp4 sp5 sc dc c1x c1y c2x c2y spd
)
(setq save (getvar "DWGTITLED"))
(if (= save 0)
(progn
(alert "还没有存盘,请保存图形文件!")
(exit)
)
)
(setq dpath (getvar "dwgprefix")
dname (getvar "dwgname")
)
(setvar "orthomode" 0)
(setvar "osmode" 0)
(setq filename (strcat dpath
(substr dname 1 (- (strlen dname) 4))
"_明细表预备表.txt"
)
)
(setq file1 (open filename "a"))
(setq dcl_id (load_dialog "g:/我的程序/阀门3.dcl"))
(if (not (new_dialog "阀门3" dcl_id))
(exit)
)
(action_tile "et1" "(setq xuhao $value)")
(action_tile "accept" "(fbcanshu)")
(start_dialog)
(unload_dialog dcl_id)
(princ)
(cond
(
(= xuhao "0")
(setq jlname "防爆电磁阀")
)
(
(= xuhao "1")
(setq jlname "电磁阀")
)
)
;(setq gg "DN100")
(setq dn (substr gg 3))
(setq dn (atof dn))
(管线件的定位尺寸)
(if (= c1x c2x)
(progn
;(setq dc (list c1x spd))
(setq
br1 (list c1x (+ spd (* (* dn 2) (sin (/ (* 60 pi) 180))) 40))
)
(setq
br2 (list c1x (- spd (* (* dn 2) (sin (/ (* 60 pi) 180))) 40))
)
(command "break" br1 br2)
)
)
(if (= c1y c2y)
(progn
;(setq dc (list spd c1y))
(setq
br1 (list (- spd (* (* dn 2) (sin (/ (* 60 pi) 180))) 40) c1y)
)
(setq
br2 (list (+ spd (* (* dn 2) (sin (/ (* 60 pi) 180))) 40) c1y)
)
(command "break" br1 br2)
)
)
(setq bname (strcat jlname "a" gg))
(setq block (tblsearch "block" bname))
(if (= block nil)
(progn
(command "layer" "m" "阀门" "c"
2 "阀门" "lw" "0.15"
"" ""
)
(if (= c1x c2x)
(progn
(setq g1x (- c1x dn))
(setq g2x (+ c1x dn))
(setq yy (* (* dn 2) (sin (/ (* 60 pi) 180))))
(setq g1y (+ spd yy))
(setq g2y (- spd yy))
(setq gy1 (+ g1y 40))
(setq gy2 (- g2y 40))
(setq gd1 (list g1x g1y))
(setq gd2 (list g2x g1y))
(setq gd3 (list g1x g2y))
(setq gd4 (list g2x g2y))
(setq gd5 (list g1x gy1))
(setq gd6 (list g2x gy1))
(setq gd7 (list g1x gy2))
(setq gd8 (list g2x gy2))
(setq gd9 (list g1x ty))
(setq gd10 (list g2x ty))
(command "line" gd1 gd2 "")
(command "line" gd1 gd4 "")
(command "line" gd2 gd3 "")
(command "line" gd3 gd4 "")
(command "line" gd5 gd6 "")
(command "line" gd7 gd8 "")
(command "line" gd9 gd10 "")
(setq gd11 (list (+ c1x 200) spd))
(setq gd12 (list (+ c1x 340) (- spd 70)))
(setq gd13 (list (+ c1x 200) (+ spd 70)))
(command "line" dc gd11 "")
(command "rectang" gd12 gd13)
(setq gd14 (list (+ c1x 270) spd))
(setq wz1 "M")
(command "-style" "mm" "宋体" 70 1 90 "N" "N")
(command "text" "s" "mm" "j" "m" gd14 0 wz1)
(setq z1 (list g1x gy1))
(setq z4 (list (+ c1x 340) gy2))
)
)
(if (= c1y c2y)
(progn
(setq g1y (+ c1y dn))
(setq g2y (- c1y dn))
(setq xx (* (* dn 2) (sin (/ (* 60 pi) 180))))
(setq g1x (- spd xx))
(setq g2x (+ spd xx))
(setq gx1 (- g1x 40))
(setq gx2 (+ g2x 40))
(setq gd1 (list g1x g1y))
(setq gd2 (list g2x g1y))
(setq gd3 (list g1x g2y))
(setq gd4 (list g2x g2y))
(setq gd5 (list gx1 g1y))
(setq gd6 (list gx2 g1y))
(setq gd7 (list gx1 g2y))
(setq gd8 (list gx2 g2y))
(setq gd9 (list spd g1y))
(setq gd10 (list spd g2y))
(command "line" gd1 gd3 "")
(command "line" gd1 gd4 "")
(command "line" gd2 gd3 "")
(command "line" gd2 gd4 "")
(command "line" gd5 gd7 "")
(command "line" gd6 gd8 "")
(command "line" gd9 gd10 "")
(setq gd11 (list spd (+ c1y 200)))
(setq gd12 (list (- spd 70) (+ c1y 340)))
(setq gd13 (list (+ spd 70) (+ c1y 200)))
(command "line" dc gd11 "")
(command "rectang" gd12 gd13)
(setq gd14 (list spd (+ c1y 270)))
(setq wz1 "M")
(command "-style" "mm" "宋体" 70 1 0 "N" "N")
(command "text" "s" "mm" "j" "m" gd14 0 wz1)
(setq z1 (list gx1 (+ c1y 340)))
(setq z4 (list gx2 g2y))
)
)
(setq se1 (ssget "c" z1 z4 '((8 . "阀门"))))
(setq bname (strcat jlname "a" gg))
(command "-block" bname dc se1 "")
)
)
(command "-insert" bname dc "" "" "")
(setq tyname (entget (entlast)))
(setq tyjbl (assoc 5 tyname))
(setq tyjb (cdr tyjbl))
(setq ljname jlname)
(setq ljunit "个")
(setq ljxh (strcat xh ghg gg))
(setq ljname1 (strcat ljname " " ljxh))
(setq mxb1 '())
(setq mxb1 (append mxb1 (list tyjb)))
(setq mxb1 (append mxb1 (list ljname1)))
(setq mxb1 (append mxb1 (list ljunit)))
;(setq mxb1 (vl-princ-to-string mxb1))
(setq mxb2 (StrUnParse mxb1 ","))
(write-line mxb2 file1)
)
(defun fbcanshu ()
(setq xh (get_tile "ed1"))
(setq ghg (get_tile "ed2"))
(setq gg (get_tile "ed3"))
)
(defun 管线件的定位尺寸 ()
(setq gx (entsel "请选择所在的管线\n"))
(setq t1 (car gx))
(setq tt (cadr gx))
(setq tx (car tt))
(setq ty (cadr tt))
(setq t2 (entget t1))
(setq c1 (assoc 10 t2))
(setq c1q (cdr c1))
(setq c1x (car c1q))
(setq c1y (cadr c1q))
(setq c2 (assoc 11 t2))
(setq c2q (cdr c2))
(setq c2x (car c2q))
(setq c2y (cadr c2q))
(if (= c1y c2y)
(progn
(setq sp (entsel "请选择水平方向的定位基准线\n"))
(setq fx (getpoint "请选择在所选直线的哪一侧"))
(setq fxx (car fx))
(setq sp1 (car sp))
(setq sp2 (cadr sp))
(setq spx (car sp2))
(setq spy (cadr sp2))
(setq sp3 (entget sp1))
(setq sp4 (assoc 10 sp3))
(setq sp5 (car (cdr sp4)))
(setq sc (getint "请输入水平距离\n"))
(cond
((> fxx spx) (setq spd (+ sp5 sc)))
((< fxx spx) (setq spd (- sp5 sc)))
)
(setq dc (list spd c1y))
)
)
(if (= c1x c2x)
(progn
(setq sp (entsel "请选择竖直方向的定位基准线\n"))
(setq fx (getpoint "请选择在所选直线的哪一侧"))
(setq fxx (cadr fx))
(setq sp1 (car sp))
(setq sp2 (cadr sp))
(setq spx (car sp2))
(setq spy (cadr sp2))
(setq sp3 (entget sp1))
(setq sp4 (assoc 10 sp3))
(setq sp5 (cadr (cdr sp4)))
(setq sc (getint "请输入竖直距离\n"))
(cond
((> fxx spy) (setq spd (+ sp5 sc)))
((< fxx spy) (setq spd (- sp5 sc)))
)
(setq dc (list c1x spd))
)
)
)
(defun StrUnParse (Lst Delimiter / return)
(setq return "")
(foreach str Lst
(setq return (strcat return Delimiter str))
) ;_ end of foreach
(substr return 2)
) |
|