找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 846|回复: 0

求助高手,帮看看

[复制链接]
发表于 2014-8-7 10:51:47 | 显示全部楼层 |阅读模式

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

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

×
(if (not (tblsearch "layer" "bridge"))
(command "-layer" "n" "bridge" "c" "blue" "bridge" ""))
(defun c:xxl()
   (setvar "osmode" 0)
   (setvar "filedia" 1)
(setq p1 (getpoint "选择打断第一点"))(setq p2 (getpoint p1 "选择打断第二点"))
(setq pci "LINE" pci1 "CIRCLE")
(setq ssa (ssget "w" p1 p2 (list (cons 0 pci))) ssb (ssget "w" p1 p2 (list (cons 0 pci1))))
   (if (/= ssa nil)
      (progn
        (setq n 0)
        (repeat (sslength ssa)
      (line_line)
      (setq n (+ n 1))
        )
        )
      (if (/= ssb nil)
        (progn
      (setq n 0)
      (repeat (sslength ssb)
        (cir_cir)
        (setq n (+ n 1))
      )
        )))
)


(defun line_line(/ chnumber width entse enttab stpt edpt dist ang x p1 )                  ;;;当属性为LINE时,执行此子程序
   (setq chnumber (getstring "\\n 修改标准桥位个数(Yes/No)?<No>"))    ;指定桥位个数
   (if (/= chnumber "y")
    (setq chnumber "n")                     ;当chnumber不为"y"时,为默认"n"
   )
   (setq width (getreal "\\n 请指定桥位的宽度<5.0>:"))            ;指定桥位宽度
   (if (= width nil)
     (setq width 5.0)                                               ;当为nil时,默认为5
   )
   (setq entse (ssname ssa n))                         ;选择创建选择集
(if (= entse nil)()
    (progn
      (setq enttab (entget entse))               ;根据对象名称获取属性信息
      (setq stpt (cdr (assoc 10 enttab)) )      ;获取直线的起始点坐标
      (setq edpt (cdr (assoc 11 enttab)) )      ;获取直线的终点坐标
      (setq dist (distance stpt edpt))         ;获取该直线的长度
      (setq ang (angle stpt edpt))             ;获取该直线的角度
      (if (= "n" chnumber)                     ;当桥位个数为默认"n"时,执行
       (cond ((< dist 20) (setq x 0))         ;当直线长度小于20时,x为0
         ((< dist 80) (setq x 1))         ;当直线长度小于80时,x为1
         ((< dist 180) (setq x 2))        ;当直线长度小于180时,x为2
         ((< dist 250) (setq x 3))        ;当直线长度小于250时,x为3
         ((> dist 250) (setq x (fix (/ dist 80.))))   ;当直线长度大于250时,x为长度除以80的整数值
       )
       (progn                                 ;当表达式(= "n" chnumber)不成立时执行
     (prompt    (strcat    "**Length of selected line is " (itoa (fix dist)) "\\n" ))                            ;命令行出现提示所选择的直线长度
     (setq x (getint "\\n 请输入桥位的个数:"))    ;指定桥位的个数  
      ))
                              
     (setq bgdist (/ (- dist (* width x)) (+ x 1.0)))     ;求出直线打桥位后每一小段的距离
     (repeat x                                 ;循环x次(command处理)
       (setq p1 (polar stpt ang (/ bgdist 2)) ftpt (polar stpt ang bgdist))     ;
       (setq sdpt (polar ftpt ang width))
       (command "break" p1 "f" ftpt sdpt )
       (setq stpt sdpt)
     )
   ))
)                                    
(defun cir_cir(/ cen rad a b c jd x sjd i pt1 pt2 pt3 pt4 )
   (setvar "osmode" 0)
   (setvar "filedia" 1)
   (setq cen nil rad nil en nil len (getreal "\\n 请输入断开的宽度<5>:"))
    (if (= len nil) (setq len 5))
      (setq en (entget (ssname ssb n)))
      (setq cen (cdr (assoc 10 en)))
      (setq rad (cdr (assoc 40 en)))
      (setq a (* rad rad) b (/ len 2.0) c (sqrt (- a b)) jd (atan (/ b c)))
      (if (< rad 30)(setq x 1)(if (< rad 60)(setq x 2)(if (< rad 90)(setq x 3)(if (> rad 90)(setq x (fix (/ rad 30)))))))
      (setq sjd (/ 360 x))
      (setq pt1 (polar cen (- 0 jd) rad) pt2 (polar cen (+ 0 jd) rad) i 1)
      (command "break" pt1 pt2)
      (repeat (- x 1)
     (setq pt3 (polar cen (- (* (/ pi 180) (* sjd i)) jd) rad) pt4 (polar cen (+ (* (/ pi 180) (* sjd i)) jd) rad) )
      (command "zoom" "c" pt3 (* len 4) "break" pt3 pt4 "zoom" "p")
      (setq i (+ 1 i))
      (prompt (rtos i 2 0))
    )
   )

;;;;请高手看看这个加载后出错,用不了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-28 02:53 , Processed in 0.331730 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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