autolisp吧 关注:476贴子:1,087
  • 2回复贴,共1

大神们,帮忙看看这个代码哪儿有问题?老是出现“参数类型错误:

只看楼主收藏回复

defun c:ZHDGX()
(claim)
(command "layer" "m" "dgxj" "")
(command "layer" "c" "blue" "dgxj" "")
(dgx)
)
(princ "\n******** 键入ZHDGX 启动程序 ***\n")
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun claim()
(alert"\n<< 转换等高线程序 >>")
)
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun dgx()
(setq NEWDIST(getreal"请输入转换等高线的等高距:"))
(prompt "请选择等高线:")
(setq SS(ssget))
(setq len(sslength SS))
(setq n 0)
(repeat len
(setq ent(ssname ss n))
(setq entdate(entget ent))
(setq pd(assoc 0 entdate)))
(setq t1( * NEWDIST 5))
(if(=pd "TEXT")
(PROGN
(setq gc1(assoc 10 entdate))
(setq gc2(cdr gc1))
(setq x0(car gc2))
(setq y0(cadr gc2))
(setq z1(caddr gc2))
(setq ZC(/z1 t1))
(setq zd(fix(-ZC zd))
(if (/=kk 0)(command "erase" ent ""))
)
)
(if( = pd“LWPOLYLINE")
(command "change" ent "" "p" "la" "0" "" :)
(PROGN
(command "pedit" ent "8" "X" "")
(setq gel(assoc 38 entdate))
(setq x0(car ge2))
(setq y0(eadr gc2))
(setq z1(caddr go2))
(setq z0(atof(rtos z1 2 0)))
(setq lst(cons 28 z0))
(setq lst(list 10 x0 y0 z0))
(entmod(subst lst gcl engdate))
(setq Za(/z0 t1)))
(setq zb(fix(/z0 t1)))
(setq kk(-Za zb))
(if (=kk 0)
(PROGN
(command "change" ent "p" "la" "dgxj" "thickness" "8120000" "" )
)
(PROGN
(setq go3(/z0 NEWDIST)))
(setq ge4(fix(/z0 NEWDIST)))
(setq k(-ge4 ge3))
(if(/=k 0)(command "erase" ent ""))
(if(=k 0)(command "change" ent "" "p" "la" "dgx" "p" "thickness" "8110000" ""))
)
)
)
)
(if(= pd "POLYLINE")
(PROGN
(setq ge1(assoc 10 entdate))
(setq go2(cdr ge1))
(setq x0(car gc2))
(setq y0(eadr go2))
(setq z1(erddr go2))
(setq z0(atof(rtos z1 2 0 )))
(setq lst(list 10 x0 y0 z0 ))
(entmod(subst lst ge1 entdate))
(setq Za(/z0 t1))
(setq zb(fix(/z0 t1)))
(setq kk(-Za zb))
(if(= kk 0)
(PROGN
(command "change" ent "" "p" "la" "dgxj" "p" "thickness" "8120000" ""))
)
(PROGN
(setq go3(/z0 NEWDIST))
(setq go4(fix(/z0 NEWDIST)))
(setq k(-gc4 ge3))
(if (/=k 0)(comrllarld "erase" ent ""))
(if (=k 0)(command "change" ent "" "p" "la" "dgx" "p" "thickness" "8110000" "" ))
)
)
)
)
(setq n(+n 1))
)
end repeat
(princ)
)
上面运行以后老师出现”参数类型错误: lselsetp nil“或者”参数类型错误: numberp: nil“或者未知命令


1楼2015-05-30 22:34回复
    最开始就少了个括号,
    与第6行括号,组成一对,


    IP属地:安徽来自Android客户端2楼2015-08-15 06:55
    回复
      (defun c:cb(/ p0 p1 p2 p3 p4 p5 p6 r a b)
      (setq v1(getvar "osmode"));获取当前的目标捕捉类型,将其赋给变量v1
      (setq v2(getvar "cmdecho"));获取当前的普通命令提示状态,将其赋给变量v2
      (setq v3(getvar "blipmode"));获取当前的光标痕迹显示状态,将其赋给变量v3
      (setvar "osmode" 0);关闭目标捕捉状态
      (setvar "cmdecho" 0);不显示普通命令的提示
      (setvar "blipmode" 0) ;不显示光标痕迹
      (setq p0 (getpoint "\n 输入车标定位点:"))
      (setq r (getdist p0 "\n 输入车标大径"))
      (command (setq a (* 0.13 r) b (* 0.9 r)))
      (setq p1 (polar p0 (* -0.17 pi) b))
      (setq p2 (polar p0 (* 0.17 pi) a))
      (setq p3 (polar p0 (* 0.5 pi) b))
      (setq p4 (polar p0 (* 0.83 pi) a))
      (setq p5 (polar p0 (* -0.83 pi) b))
      (setq p6 (polar p0 (* -0.5 pi) b))
      (command "color" "s")
      (command "line" p1 p2 p3 p4 p5 p6 "s")
      (command "line" p0 p2 "")
      (command "line" p0 p5 "")
      (command "line" p0 p6 "")
      (command "circle" p0 b)
      (command "circle" p0 r)
      (setvar "osmode");恢复目标捕捉的原来状态
      (setvar "cmdecho" v2) ;恢复普通命令提示原来的显示状态
      (setvar "blipmode" v3) ;恢复光标痕迹原来的显示状态
      (command "undo" "e");结束
      (princ)
      )参数类型错误 大佬们看看


      IP属地:河南4楼2022-07-17 18:00
      回复