这是正确的!我接受 我用Lisp程序来做这个。。。
(defun c:cmeasure(/*error*\u StartUndo \u EndUndo \u SelectIf \u IsCurveObject acdoc al bl d0 di en mx nm pt)(defun*error*(msg)(if acdoc(\u EndUndo acdoc))(或(wcmatch(strcase msg)“*BREAK,*CANCEL*,*EXIT*”)(princ(strcat“**”error:“msg”**”))(princ))(defun \u StartUndo(doc)(\u EndUndo doc)(vla StartUndoMark doc))(defun(doc)(如果(=8(对数和8(getvar'UNDOCTL))(vla EndUndoMark doc))(defun _SelectIf(msg pred func/sel)(setq pred(eval pred))(while(progn(setvar'ERRNO 0)(setq sel(car(func msg)))(cond(=7(getvar'ERRNO))(princ“\n丢失,再试一次。”)((eq'ENAME(type sel))(if(and pred(not(pred sel)))(princ“\n所选对象无效。”))))sel)(defun _IsCurveObject(entity/param)(和(not(vl-catch-all-error-p(setq param(vl catch all apply‘vlax curve getendparam(list entity)))param))(setq acdoc(vla get activedocument(vlax get acad object))nm(trans’(0.0.1。)1 0 t))(if(setq en(\u SelectIf“\n选择要测量的对象:”'isCurveObject entsel))(progn(initget 7“Block”)(setq di(getdist“\n指定段或[块]的长度):”)(if(eq“Block”di)(progn(while(progn(setq bl(getstring t)”\n输入要插入的块的名称:)(cond((not(snvalid bl))(princ“\n无效的块名。”)((not(tblsearch“BLOCK”bl))(princ(strcat“\n无法找到BLOCK\”bl“)))(initget“Yes No”)(setq al(not(eq“No”(getkword“\nAlign block with object?:”))(initget 7)(setq di(getdist“\n指定段长度:)))(setq mx(vlax curve getdistatparam en(vlax curve getendparam en))d0(-mx(*di(fix(/mx di)))2。)di))(_StartUndo acdoc)(而(和(
你Lisp程序是从哪里来的?它有一个没有标题的结尾 我不记得塔尔瓦。。。
页:
1
[2]