看看这个程序在CAD2010中有问题吗?
<p>这个是一个前辈在CAD2004中的一个程序,为什么加载到2010中不能使用呢?</p><p>错误提示:; 错误: no function definition: LP_INSTSCALE</p><p>;本程序完成于1994,12,12.修改于1996,1,4.用于在指定某两条线的上下关系基础上,将下面的线切断.<br/>;修改后可连接原本不交叉的线.1998,6,1使可多选下线.<br/>;2001/8/1修改后默认值取自CurrentWork.ini文件.2002/5/29修改CurrentWork.ini文件,按比例保存默认值<br/>(defun c:btreset( / sc ddefault filename BTdist)<br/> (setq sc (getvar "userr1"))(setq ddefault 1.3)<br/> (setq BTdist (strcat "BTDist" (rtos sc 2 0)))<br/> (setq filename (strcat (getvar "DWGPREFIX") "currentwork.ini"))<br/> (lp_setcfg filename "GeneralAPP/BT" BTDist (rtos (* ddefault (lp_InstScale sc) sc) 2 2))<br/> (princ "\n断线距离已复原.")(princ)<br/>)<br/>(defun c:bt(/ oldos sc ddefault a1 info pa pb sdl len_dl d a2 pc pd intall int bp1 bp2 filename keylist testini distanBT BTdist)<br/> (setq *error* err)(setvar "cmdecho" 0)(command "UNDO""G")<br/> (lp_chkscale)(setq sc (getvar "userr1"))<br/> (setq ddefault 1.3)<br/> ;-----<br/> (setq BTdist (strcat "BTDist" (rtos sc 2 0)))<br/> (setq filename (strcat (getvar "DWGPREFIX") "currentwork.ini"))<br/> (setq keylist (list (list BTDist (rtos (* ddefault (lp_InstScale sc) sc) 2 2))))<br/> (setq testini (lp_inifileCheck "Currentwork.ini" "GeneralAPP/BT" keylist) keylist nil)<br/> (if (NULL testini)<br/> (setq distanBT (* ddefault (lp_InstScale sc) sc))<br/> (setq distanBT (read (cadr (lp_getcfg filename "GeneralAPP/BT" BTDist))))<br/> )<br/> ;-----<br/> (setq a1 (car (lp_pickent "请点取上线:" "LINE" "点取的不是直线,请重点.")))<br/> (setq info (lp_qlineinfo a1) pa (caar info) pb (cadar info))<br/> (prompt "\n请选择下线:")(setq sdl (ssget '((0 . "LINE"))))<br/> (setq len_dl (sslength sdl))<br/> ;-----<br/> (setq d (getdist (strcat "\n请输入线一侧断开的距离<" (rtos distanBT 2 2)">: ")))<br/> (if (not d) (setq d distanBT))<br/> (setq distanBT d)<br/> (lp_setcfg filename "GeneralAPP/BT" BTDist (rtos distanBT 2 2))<br/> ;-----输入一侧断开的度<br/> (setq oldos (lp_osmode))<br/> (while (> len_dl 0)<br/> (setq a2 (ssname sdl (1- len_dl)));a2是下线<br/> (setq info (lp_qlineinfo a2) pc (caar info) pd (cadar info))<br/> (setq intall (inters pa pb pc pd nil));求两线延长线上的交点<br/> (setq int (inters pa pb pc pd));求两线交点<br/> (if (not intall)<br/> (if (/= a1 a2)(progn(redraw a1 3)(redraw a2 3)(alert "\n 这两条线无交点! ")(redraw a1)(redraw a2)))<br/> (progn<br/> (setq a2 (entget a2))<br/> (if (= int nil)<br/> (progn <br/> (if (<= (distance intall (cdr (assoc 10 a2))) (distance intall (cdr (assoc 11 a2))))<br/> (setq a2 (subst (cons 10 intall) (assoc 10 a2) a2))<br/> (setq a2 (subst (cons 11 intall) (assoc 11 a2) a2))<br/> )<br/> (entmod a2)<br/> (setq int intall)<br/> ));end if<br/> (if (< (distance int pc) (distance int pd))(setq pc pd))<br/> (setq bp1 (polar int (angle int pc) d) bp2 (polar int (+ pi (angle int pc)) d))<br/> (command "break"(cdr (assoc -1 a2)) bp1 bp2)<br/> )<br/> )<br/> (setq len_dl (1- len_dl))<br/> )<br/> (setvar "osmode" oldos)(command "UNDO""End")<br/> (redraw a1)(setq *error* nil)(princ)<br/>)<br/></p> 用了别人的函数。在2004中行,在2010中就不行了。
页:
[1]