找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 743|回复: 3

[求助] [求助]:请斑竹及各位高手指点!

[复制链接]
发表于 2005-7-27 09:18:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
;;;                                                                    ;
;;;  PANEL.LSP                                                         ;
;;;--------------------------------------------------------------------;
;;;       Function:  panel                                             ;
;;;                                                                    ;
;;;      Arguments:  none                                              ;
;;;                                                                    ;
;;; Returned Value:  none                                              ;
;;;                                                                    ;
;;;          Usage: (panel)                                            ;
;;;--------------------------------------------------------------------;
(defun c:panel (/ pt0 pt1 pt2 pt3 pt4 pt10) ;; local variables pt0,pt1,pt2,pt3 and pt4 are declared
  (setq plen (getreal "\nPlease Input Panel Length(450,910,or 802.5 etc.): "))
  (setq        pt1 (getpoint "\nEnter the start point for the line: "))
    (setq pt0 (list (+ (car pt1) plen)  (- (cadr pt1) 12.5)))
    (princ )
    (command "_.layer" "new" "001-panel" "s" "001-panel" "c" "4" "" "")
    (command "_.rectang" pt1 pt0)
    (command "_.change" "l" "" "p" "la" "001-panel" "")
    (command "_.copy" "l" "" pt1 "@0,-52.5,0")        
    (setq pt2 (list (car pt1)  (- (cadr pt1) 52.5)))
    (command "_.pline" pt2 "@0,40" "@24,0" "@0,-40" "@-24,0" "@24,40" "")
    (command "_.change" "l" "" "p" "la" "001-panel" "")
    (if (> plen 450.0)
      (progn
         (setq pt3 (list (+ (car pt1) (/ plen 2)) (- (cadr pt1) 52.5)))
;;         (princ pt3)
         (setq pt10 (list (- (car pt3) 12) (cadr pt3)))
;;         (princ pt10)
         (command "_.pline" pt10 "@0,40" "@24,0" "@0,-40" "@-24,0" "@24,40" "")
         (command "_.change" "l" "" "p" "la" "001-panel" "")
      )
     )
      (setq pt4 (list (+ (car pt1)  (- plen 24)) (- (cadr pt1) 52.5)))   
      (command "_.pline" pt4 "@0,40" "@24,0" "@0,-40" "@-24,0" "@24,40" "")
      (command "_.change" "l" "" "p" "la" "001-panel" "")
      
)
---------------------------------------------------------------------------------
上面是代码,运行后发现很不稳定,中间的龙骨位置总是向左偏12,偶尔运行正常,具体出现的情况见附带的文件,请斑竹及各位高手指点!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-7-27 10:24:19 | 显示全部楼层
修改如下:[php](load "xyp_lib")
;|加载通用函数(可在签名栏直接下载)
如果已经下载xyp_lib并放到搜索路径下可以不再下载!
利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
1.在acad.lsp中增加(load"xyp_lib")
2.在每个程序内增加(load"xyp_lib")
3.在command下,输入(load"xyp_lib")
4.在菜单.mnl中增加(load"xyp_lib")
5.将xyp_lib.vlx文件直接拽到cad屏幕
★通用函数下载地址:[/COLOR]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661|;

;;;龙骨绘制 lizhongf
(defun c:panel ()
  (cmdla0)
  (setq plen (UREAL 7 "" "\n长度(450,910,or 802.5 etc.)" plen))
  (while (setq pt1 (getpoint "\n起点<退出> : "))
    (setq pt0 (list (+ (car pt1) plen) (- (cadr pt1) 12.5)))
    (setvar "osmode" 0)
    (mkla "001-panel" 4)
    (command "_.rectang" pt1 pt0)
    (command "_.copy" "l" "" pt1 "@0,-52.5,0")
    (setq pt2 (list (car pt1) (- (cadr pt1) 52.5)))
    (pt-line pt2)
    (if        (>= plen 450.0)
      (progn
        (setq pt3 (list (+ (car pt1) (/ plen 2)) (- (cadr pt1) 52.5))
              pt5 (list (- (car pt3) 12) (cadr pt3))
        )
        (pt-line pt5)
      )
    )
    (setq pt4 (list (+ (car pt1) (- plen 24)) (- (cadr pt1) 52.5)))
    (pt-line pt4)
  )
  (cmdla1)
)
(defun pt-line (#pt)
  (command "_.pline" #pt "@0,40" "@24,0" "@0,-40" "@-24,0" "@24,40" "")
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-27 22:54:21 | 显示全部楼层
这么个小程序,不用加载什么通用函数库吧。
[php]
(defun c:panel ( / pt0 pt1 pt2 plen n str d old_cmdecho old_osmode)

  (setq        old_cmdecho (getvar "cmdecho"))
  (setq        old_osmode (getvar "osmode"))
  (setvar "cmdecho" 0)
        (setvar "osmode" 0)
       
        (setq        plen (getreal "\nPlease Input Panel Length(450,910,or 802.5 etc.): ")
              pt1 (getpoint "\nEnter the start point for the line: ")
              pt0 (list (+ (car pt1) plen) (- (cadr pt1) 12.5))
              pt2 (list (car pt1) (- (cadr pt1) 52.5))
        )
       
        (command "-layer" "m" "001-panel" "c" "4" ""        "")
        (command "_.rectang" pt1 pt0)
        (command "_.copy" "l" "" "0,-52.5" "")
        (command "_.pline" pt2 "@0,40" "@24,0" "@0,-40"        "@-24,0" "@24,40"        "")

        (if        (> plen 450.0)
                (setq n 2)
                (setq n 1)
        )
        (setq d (/ (- plen 24) n)
                                str (strcat (rtos d 2 2) ",0")
        )
       
        (repeat n
                (command "_.copy" "l" "" str "")
        )
       
        (setvar "osmode" old_osmode)
        (setvar "cmdecho" old_cmdecho)

)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-28 09:05:34 | 显示全部楼层
谢谢xyp1964斑竹及ohmylove 朋友热心指导,问题已解决
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 11:07 , Processed in 0.234494 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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