明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1598|回复: 3

[基础] [求助]急啊!我有个程序但是不能运行起来

[复制链接]
发表于 2010-9-15 22:18:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-9-15 22:39:21 编辑

我在网上下的多段线修测得lisp源代码,但是不知道怎么运行啊  我可以加载但是不能用啊 怎么办?

 

 

源代码:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;线延伸;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:extendline (/ ensel ename object point width points first end)
  (setq osmode (getvar "osmode"))
  (if (setq ensel (entsel "\n请选择一根线:"))
    (progn
      (setvar "cmdecho" 0)
      (setvar "osmode" 0)
      (command "undo" "g")
      (setq ename (car ensel))
      (setq object (vlax-ename->vla-object ename))
      (if (= (vla-get-entityname object) "AcDbPolyline")
 (if (vlax-curve-isClosed object)
   (alert "这根线是闭合的!")
   (progn
     (setq width (car (vla-getWidth object 0 'StartWidth, 'EndWidth)))
     (setvar "plinewid" width)
     (setq point (cadr ensel))
     (setq point (list (car point) (cadr point) ))
     (setq points (poly_pts (vla-get-coordinates object)))
     (setq first (car points))
     (setq end (last points))
     (if (< (distance point first) (distance point end))
       (drawline first t points)
       (drawline end nil points)
     )
     (setvar "plinewid" 0)
   )
 )
 (princ "\n这个程序只支持LWPOLYLINE!")
      )
      (vlax-release-object object)
      (command "undo" "e")
      (setvar "osmode" osmode)
      (prin1)
    )
  )
)
(defun drawline (d_pt d_mode d_pts / draw)
  (setq draw t)
  (while draw
    (initget 128)
    (setq d_pt (getpoint d_pt "\n撤消[U]/闭合[C]/<下一点>:"))
    (cond
      ((or (= d_pt "u") (= d_pt "U"))
       (if (equal d_pts points)
  (if d_mode
    (setq d_pt (car d_pts))
    (setq d_pt (car (reverse d_pts)))
  )
  (progn
    (if d_mode
      (setq d_pts (cdr d_pts)
     d_pt  (car d_pts)
      )
      (setq d_pts (reverse (cdr (reverse d_pts)))
     d_pt  (car (reverse d_pts))
      )
    )
    (vla-put-coordinates object (apply 'append d_pts))
    (command "pedit" ename "w" width "")
  )
       )
      )
      ((= (type d_pt) 'list)
       (progn
  (setq d_pt (list (car d_pt) (cadr d_pt)))
  (if d_mode
    (setq d_pts (cons d_pt d_pts))
    (setq d_pts (reverse (cons d_pt (reverse d_pts))))
  )
  (vla-put-coordinates object (apply 'append d_pts))
  (command "pedit" ename "w" width "")
       )
      )
      ((or (= d_pt "c") (= d_pt "C")) (command "pedit" ename "c" "") (setq draw nil))
      ((= d_pt nil) (setq draw nil))
      (t
       (print "输入错误!")
       (if d_mode
  (setq d_pt (car d_pts))
  (setq d_pt (car (reverse d_pts)))
       )
      )
    )
  )

发表于 2010-9-15 23:54:00 | 显示全部楼层
“我在网上下的多段线修测得lisp源代码”= 垃圾
 楼主| 发表于 2010-9-16 00:08:00 | 显示全部楼层

回复:(xyp1964)“我在网上下的多段线修测得lisp源代...

我放上去的带代码你看没?
发表于 2010-9-16 11:01:00 | 显示全部楼层
"(defun c:extendline ( "  extendline和(之间有个空格,去掉空格再试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 10:28 , Processed in 0.175751 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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