明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1422|回复: 1

[基础] 看看这个程序在CAD2010中有问题吗?

[复制链接]
发表于 2010-5-26 16:56 | 显示全部楼层 |阅读模式

这个是一个前辈在CAD2004中的一个程序,为什么加载到2010中不能使用呢?

错误提示:; 错误: no function definition: LP_INSTSCALE

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

发表于 2010-5-26 20:51 | 显示全部楼层
用了别人的函数。在2004中行,在2010中就不行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 13:02 , Processed in 0.168968 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表