找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 650|回复: 2

[求助] [求助]:希望高手帮忙修改一下源码

[复制链接]
发表于 2006-12-7 17:06:15 | 显示全部楼层 |阅读模式

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

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

×
小弟是做结构的 用的一些lsp程序 但感觉这些程序对绘图环境要求很苛刻 只能用他的初始化
程序后 才能用这些程序 我希望高手帮忙改下 能够适合通常环境 下面3个程序 分别是画节点时直接偏移成钢筋 还有画板钢筋时的负筋 底筋 希望高手帮忙 先谢过了
(defun c:gj( / a1 ss si i ssl pt pt1 pt2 p1 p2 ts d cla os)
  (setvar "CMDECHO" 0)
  (setq d (getvar "BLIPMODE") cla (getvar "clayer") os (getvar "osmode"))
  (setvar "BLIPMODE" 0)
  (setvar "osmode" 0)
  (setq ts (* 0.8 bl))
  (princ "\nSelect an line to get GJ: ")
  (setq ss (ssget))
  (if ss
    (progn
      (setq pt (getpoint "\nDirection Point:") i 0)
      (repeat (sslength ss)
        (setq si (ssname ss i) i (1+ i) ssl (entget si))
        (if (= (cdr (assoc 0 ssl)) "LINE")
          (progn
            (setq pt1 (cdr (assoc 10 ssl))
                  pt2 (cdr (assoc 11 ssl))
                  a1 (angle pt1 pt2)
                  p1 (polar pt1 (+ a1 (* 0.5 pi)) ts)
                  p2 (polar pt1 (- a1 (* 0.5 pi)) ts)
            )
            (if (> (distance p1 pt) (distance p2 pt)) (setq p1 p2))
            (setq p2 (polar pt2 (angle pt1 p1) ts)
                  p1 (polar p1 a1 ts)
                  p2 (polar p2 (+ a1 pi) ts)
            )
            (setvar "clayer" "r0")
            (command "line" p1 p2 "")
          ) ;progn
        ) ;if
      ) ;repeat
    ) ;progn
    (princ "\nSelect is Empty!")
  ) ;if
  (setvar "BLIPMODE" d)
  (setvar "clayer" cla)
  (setvar "osmode" os)
  (princ)
)

(defun c:fj( / os pt1 pt2 pt3 pt4 pt5 pt6 l1 l2 cula an s1 s2)
  (setq os (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setq te (getvar "textstyle"))
  (setvar "osmode" 512)
  (setq pt1 (osnap (getpoint "\nPick the first point:") "near"))
  (setvar "osmode" 128)
  (setq pt2 (getpoint pt1 "\nPick the second point:"))
  (setvar "osmode" 128)
  (setq l1 (getdist pt1 "\nEnter first length <0.0>: "))
  (if (= l1 nil) (setq l1 0.0))
  (if (< l1 -0.01)
    (setq l1 (* -1.0 l1))
    (if (> l1 0.01)
      (progn
        (setq l1 (* (1+ (fix (/ (* 0.25 l1) 50.0))) 50))
        (if (< l1 700.0) (setq l1 700.0))
      )
    )
  )
  (setq l2 (getdist pt2 "\nEnter second length <0.0>: "))
  (if (= l2 nil) (setq l2 0.0))
  (if (< l2 -0.01)
    (setq l2 (* -1.0 l2))
    (if (> l2 0.01)
      (progn
        (setq l2 (* (1+ (fix (/ (* 0.25 l2) 50.0))) 50))
        (if (< l2 700.0) (setq l2 700.0))
      )
    )
  )
  (setvar "osmode" 0)
  (setq an (angle pt1 pt2))
  (if (> l1 0.01)
    (setq pt3 (polar pt1 (+ an 3.1415926) l1) s1 (rtos l1 2 0))
    (setq pt3 (polar pt1 an (* 0.5 bl)) a1 "")
  )
  (if (> l2 0.01)
    (setq pt4 (polar pt2 an l2) s2 (rtos l2 2 0))
    (setq pt4 (polar pt2 (+ an 3.1415926) (* 0.5 bl)) s2 "")
  )
  (setq pt5 (polar pt3 (- an 1.570796) (* 2.5 bl)))
  (setq pt6 (polar pt4 (- an 1.570796) (* 2.5 bl)))
  (setq cula (getvar "clayer"))
  (command "layer" "m" "r0" "")
  (command "line" pt5 pt3 pt4 pt6 "")
  (if (> l1 0.01)
    (progn
      (setq pt5 (list (* 0.5 (+ (car pt1) (car pt3)))
                      (* 0.5 (+ (cadr pt1) (cadr pt3)))))
      (if (< an pi)
        (setq pt5 (polar pt5 (- an (* 0.5 pi)) (* 1.8 bl)))
        (setq pt5 (polar pt5 (+ an (* 0.5 pi)) (* 1.8 bl)))
      )
      (command "layer" "m" "dt" "")
      (setvar "textstyle" "tz")
      (command "text" "mc" pt5 (* 2.0 bl) (angtos an 0 4) s1)
    )
  )
  (if (> l2 0.01)
    (progn
      (setq pt6 (list (* 0.5 (+ (car pt2) (car pt4)))
                      (* 0.5 (+ (cadr pt2) (cadr pt4)))))
      (if (< an pi)
        (setq pt6 (polar pt6 (- an (* 0.5 pi)) (* 1.8 bl)))
        (setq pt6 (polar pt6 (+ an (* 0.5 pi)) (* 1.8 bl)))
      )
      (command "layer" "m" "dt" "")
      (setvar "textstyle" "tz")
      (command "text" "mc" pt6 (* 2.0 bl) (angtos an 0 4) s2)
    )
  )
  (setvar "textstyle" te)
  (setvar "clayer" cula)
  (setvar "osmode" os)
  (princ)
)

(defun c:dj( / os pt1 pt2 pt3 pt4 cula an)
  (setq os (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setvar "osmode" 512)
  (setq pt1 (osnap (getpoint "\nPick the first point:") "near"))
  (setvar "osmode" 128)
  (setq pt2 (getpoint pt1 "\nPick the second point:"))
  (setvar "osmode" 0)
  (setq an (angle pt1 pt2))
  (setq pt3 (polar pt1 an (* 0.5 bl)))
  (setq pt4 (polar pt2 (+ an 3.1415926) (* 0.5 bl)))
  (setq cula (getvar "clayer") an (/ (* an 180) 3.1415926))
  (command "layer" "s" "r0" "")
  (command "line" pt3 pt4 "")
  (command "insert" "g2" pt3 blx blx an)
  (command "insert" "g2m" pt4 blx blx an)
  (command "layer" "s" cula "")
  (setvar "osmode" os)
  (princ)
)

;(defun calp (pt1 pt2 d / p lmd)
;  (setq lmd (/ d (distance pt1 pt2)))
;  (setq p (mapcar '+ pt1 (mapcar '* (list lmd lmd) (mapcar '- pt2 pt1))))
;)

(defun trn(s1 / s0 s2 n0 j)
  (setq s0 "" j 1)
  (while (<= j (strlen s1))
    (setq s2 (substr s1 j 1))
    (if (= s2 "-")
      (setq s0 (strcat s0 "%%130"))
      (if (= s2 "+")
        (setq s0 (strcat s0 "%%131"))
        (if (= s2 "*")
          (setq s0 (strcat s0 "x"))
          (setq s0 (strcat s0 s2))
        )
      )
    )
    (setq j (1+ j))
  )
  (setq s2 s0)
)

(defun c:j1() (j12 1))
(defun c:j2() (j12 2))

(defun j12(n12 / x y b a0 a1 a2 cm bi os ln ent entlist na pt pt1 pt2 lay)
  (setq cm (getvar "cmdecho"))
  (setq bi (getvar "blipmode"))
  (setq os (getvar "osmode"))
  (setq ln (getvar "CLAYER"))
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "osmode" 0)
  (if (= n12 1) (setq bna1 "g1" bna2 "g1m")
                (setq bna1 "g2" bna2 "g2m")
  )
  (prompt "\nPick a line: ")
  (setq ent (entsel))
  (setq entlist (entget (car ent)))
  (setq na (cdr (assoc 0 entlist)))
  (setq b (/ bl 100.0))
  (if (= na "LINE")
    (progn
      (setq pt1 (cdr (assoc 10 entlist)))
      (setq pt2 (cdr (assoc 11 entlist)))
      (setq lay (cdr (assoc 8 entlist)))
      (initget 1)
      (setq pt (getpoint "\nPick a point to direct:"))
      (setq y (< (distance pt1 pt) (distance pt2 pt)))
      (setvar "clayer" lay)
      (setq a1 (angle pt1 pt2) a2 (angle pt2 pt1) a0 (angle pt1 pt))
      (setq x (- a1 a0))
      (if (< x 0.0) (setq x (+ (* 2.0 pi) x)))
      (if (or (< x pi))
        (if y
          (command "insert" bna2 pt1 b b (/ (* 180 a2) pi))
          (command "insert" bna1 pt2 b b (/ (* 180 a2) pi))
        )
        (if y
          (command "insert" bna1 pt1 b b (/ (* 180 a1) pi))
          (command "insert" bna2 pt2 b b (/ (* 180 a1) pi))
        )
      )
    )
    (princ "\nSelect is not a line!")
  )
  (setvar "cmdecho" cm)
  (setvar "blipmode" bi)
  (setvar "osmode" os)
  (setvar "CLAYER" ln)
  (princ)
)

(defun c:jt( / bi os ln ent entlist na pt0 pt1 pt2 pt3)
  (setq bi (getvar "blipmode"))
  (setq os (getvar "osmode"))
  (setq ln (getvar "CLAYER"))
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "osmode" 0)
  (prompt "\nPick a line: ")
  (if (setq ent (entsel))
    (progn
      (setq pt0 (cadr ent))
      (setq entlist (entget (car ent)))
      (setq na (cdr (assoc 0 entlist)))
      (if (= na "LINE")
        (progn
          (setq pt1 (cdr (assoc 10 entlist)))
          (setq pt2 (cdr (assoc 11 entlist)))
          (setvar "clayer" "D0")
          (if (> (distance pt1 pt0) (distance pt2 pt0))
            (setq pt3 pt1 pt1 pt2 pt2 pt3)
          )
          (setq pt3 (polar pt1 (angle pt1 pt2) (* bl 3.5)))
          (command "pline" pt1 "w" "0" (* 0.8 bl) pt3 "")
        )
        (princ "\nSelect is not a line!")
      )
    )
    (princ "\nSelect is empty!")
  )
  (setvar "blipmode" bi)
  (setvar "osmode" os)
  (setvar "CLAYER" ln)
  (princ)
)

(defun c:g( / la os tes ss s pt0 pt1 pt2 pt3 pt4 x1 y1 x2 y2 ang p r h)
  (setvar "cmdecho" 0)
  (setq la (getvar "clayer"))
  (setq os (getvar "osmode") r (* 2.5 bl) h (* 2.25 bl))
  (setq tes (getvar "textstyle"))
  (setvar "osmode" 0)
  (if (= gna nil) (setq gna 1))
  (setq s (entsel "\nPick the GJ_line:"))
  (if s
    (progn
      (setq pt0 (cadr s) s (car s))
      (redraw s 3)
      (setq ss (entget s))
      (if (= (cdr (assoc 0 ss)) "LINE")
        (progn
          (setq pt0 (osnap pt0 "Nearest"))
          (setq pt1 (cdr (assoc 10 ss)))
          (setq pt2 (cdr (assoc 11 ss)))
          (setq x1 (car pt1) y1 (cadr pt1) x2 (car pt2) y2 (cadr pt2))
          (if (not (or (and (< (abs (- x1 x2)) 0.00001) (< y1 y2))
                       (< x1 x2)))
            (setq p pt2 pt2 pt1 pt1 p)
          )
          (setq ang (angle pt1 pt2))
          (initget 1)
          (setq pt3 (getpoint pt0 "\nPick the directive point:"))
          (setq p (- (angle pt1 pt3) ang))
          (if (< p 0.0) (setq p (+ (* 2.0 pi) p)))
          (if (< p pi)
            (setq pt4 (polar pt0 (+ ang (* 0.5 pi)) r))
            (setq pt4 (polar pt0 (- ang (* 0.5 pi)) r))
          )
;          (setq gna (1+ gna))
          (setq pt0 (getint (strcat "\nG_name: <" (itoa gna) "> ")))
          (if (/= pt0 nil) (setq gna pt0))
          (setvar "textstyle" "tz")
          (command "layer" "m" "dt" "")
          (command "circle" pt4 r)
          (command "text" "m" pt4 h (/ (* 180.0 ang) pi) (itoa gna))
        ) ;progn
        (princ "\nPlease select a GJ_line!")
      ) ;if
      (redraw s 4)
    ) ;progn
    (princ "\nPlease select a entity!")
  ) ; if ss
  (setvar "textstyle" tes)
  (setvar "osmode" os)
  (setvar "clayer" la)
  (princ)
) ;end g

(defun c:xx( / os la l1 es pt1 pt2 pt3 pt4 pt an ss s n i)
  (setq os (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setq la (getvar "clayer"))
  (setvar "osmode" 0)
  (setq l1 (entsel "Pick first line:"))
  (if l1
    (if (/= (cdr (assoc 0 (entget (car l1)))) "LINE") (setq l1 nil))
  )
  (if l1
    (progn
      (setq l1 (car l1) es (entget l1))
      (redraw l1 3)
      (setq pt1 (cdr (assoc 10 es)))
      (setq pt2 (cdr (assoc 11 es)))
      (setq an (angle pt1 pt2))
      (setq ss (ssget))
      (setq n (sslength ss) i 0)
      (setvar "clayer" "D0")
      (repeat n
        (setq s (ssname ss i) i (1+ i))
        (setq es (entget s))
        (if (= (cdr (assoc 0 es)) "LINE")
          (progn
            (setq pt3 (cdr (assoc 10 es)))
            (setq pt4 (cdr (assoc 11 es)))
            (setq pt (inters pt1 pt2 pt3 pt4))
            (if pt
              (command "insert" "G3" pt (/ bl 100) "" (/ (* an 180) pi))
            ) ;if
          ) ;progn
        ) ;if
      ) ;repeat
      (redraw l1 4)
    ) ;progn
  ) ;if
  (setvar "clayer" la)
  (setvar "osmode" os)
  (princ)
)

(defun c:dt( / pt1 pt2 an osm str pe)
  (setvar "cmdecho" 0)
  (setvar "orthomode" 1)
  (setq osm (getvar "osmode"))
  (setvar "osmode" 0)
  (if (= dis nil) (setq dis 200.0))
  (setq pe t)
  (while (/= pe nil)
    (setq str (strcat "\nDistance{ " (rtos dis 2 0) " }/<Exit>/First point:"))
    (initget "Distance Exit")
    (setq pt0 (getpoint str))
    (cond
      ((= pt0 nil) (setq pe nil))
      ((= pt0 "Exit") (setq pe nil))
      ((= pt0 "Distance") (setq dis (getdist "\nDistance:")))
      (t (progn
           (setq pt1 (getcorner pt0 "\nSecond point:"))
           (command "stretch" "c" pt0 pt1 "")
           (setq pt2 (getpoint pt1 "\nDirecte point:"))
           (setq an (angtos (angle pt1 pt2) 0 2))
           (command pt1 (strcat "@" (rtos dis 2 1) "<" an))
         )
      )
    )
  )
  (setvar "osmode" osm)
  (princ)
)

(defun c:mo( / wd pt0 pt1 an osm str pe)
  (setvar "cmdecho" 0)
  (setvar "orthomode" 1)
  (setq osm (getvar "osmode"))
  (setvar "osmode" 0)
  (if (= dis nil) (setq dis 200.0))
  (setq pe t)
  (while (/= pe nil)
    (setq str (strcat "\nDistance{ " (rtos dis 2 0) " }/Exit/<Select>:"))
    (initget "Distance Exit Select")
    (setq wd (getkword str))
    (cond
      ((= wd "Exit") (setq pe nil))
      ((= wd "Distance") (setq dis (getdist "\nDistance:")))
      (t (progn
           (setq str (ssget))
           (if str
             (progn
               (setq pt0 (getpoint "\nFirst point:"))
               (setq pt1 (getpoint pt0 "\nDirecte point:"))
               (setq an (angtos (angle pt0 pt1) 0 2))
               (command "move" str "" pt0 (strcat "@" (rtos dis 2 1) "<" an))
             )
           )
         )
      )
    )
  )
  (setvar "osmode" osm)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-12-7 19:43:45 | 显示全部楼层
文件测试:
  1. [FONT=courier new];;钢筋、负筋、底筋
  2. (defun c:gj (/ a1 ss si i ssl pt pt1 pt2 p1 p2 ts d cla os)
  3.   (if (null no1)
  4.     (setq no1 100.0)
  5.   )
  6.   (setq        no1 (UREAL 7 "" "\n比例" no1)
  7.         d   (getvar "BLIPMODE")
  8.         cla (getvar "clayer")
  9.         os  (getvar "osmode")
  10.         s   (* 0.8 no1)
  11.   )
  12.   (setvar "CMDECHO" 0)
  13.   (setvar "BLIPMODE" 0)
  14.   (setvar "osmode" 0)
  15.   (princ "\nSelect an line to get GJ: ")
  16.   (setq ss (ssget))
  17.   (if ss
  18.     (progn
  19.       (setq pt (getpoint "\nDirection Point:")
  20.             i  0
  21.       )
  22.       (repeat (sslength ss)
  23.         (setq si  (ssname ss i)
  24.               i          (1+ i)
  25.               ssl (entget si)
  26.         )
  27.         (if (= (cdr (assoc 0 ssl)) "LINE")
  28.           (progn
  29.             (setq pt1 (cdr (assoc 10 ssl))
  30.                   pt2 (cdr (assoc 11 ssl))
  31.                   a1  (angle pt1 pt2)
  32.                   p1  (polar pt1 (+ a1 (* 0.5 pi)) ts)
  33.                   p2  (polar pt1 (- a1 (* 0.5 pi)) ts)
  34.             )
  35.             (if        (> (distance p1 pt) (distance p2 pt))
  36.               (setq p1 p2)
  37.             )
  38.             (setq p2 (polar pt2 (angle pt1 p1) ts)
  39.                   p1 (polar p1 a1 ts)
  40.                   p2 (polar p2 (+ a1 pi) ts)
  41.             )
  42.             (command "layer" "m" "r0" "c" "1" "" "")
  43.             (command "line" p1 p2 "")
  44.           )
  45.         )
  46.       )
  47.     )
  48.     (princ "\nSelect is Empty!")
  49.   )
  50.   (setvar "BLIPMODE" d)
  51.   (setvar "clayer" cla)
  52.   (setvar "osmode" os)
  53.   (princ)
  54. )

  55. (defun c:fj (/ os pt1 pt2 pt3 pt4 pt5 pt6 l1 l2 cula an s1 s2)
  56.   (if (null no1)
  57.     (setq no1 100.0)
  58.   )
  59.   (setq        no1 (UREAL 7 "" "\n比例" no1)
  60.         os  (getvar "osmode")
  61.   )
  62.   (setvar "cmdecho" 0)
  63.   (setq te (getvar "textstyle"))
  64.   (setvar "osmode" 512)
  65.   (setq pt1 (osnap (getpoint "\nPick the first point:") "near"))
  66.   (setvar "osmode" 128)
  67.   (setq pt2 (getpoint pt1 "\nPick the second point:"))
  68.   (setvar "osmode" 128)
  69.   (setq l1 (getdist pt1 "\nEnter first length <0.0>: "))
  70.   (if (= l1 nil)
  71.     (setq l1 0.0)
  72.   )
  73.   (if (< l1 -0.01)
  74.     (setq l1 (* -1.0 l1))
  75.     (if        (> l1 0.01)
  76.       (progn
  77.         (setq l1 (* (1+ (fix (/ (* 0.25 l1) 50.0))) 50))
  78.         (if (< l1 700.0)
  79.           (setq l1 700.0)
  80.         )
  81.       )
  82.     )
  83.   )
  84.   (setq l2 (getdist pt2 "\nEnter second length <0.0>: "))
  85.   (if (= l2 nil)
  86.     (setq l2 0.0)
  87.   )
  88.   (if (< l2 -0.01)
  89.     (setq l2 (* -1.0 l2))
  90.     (if        (> l2 0.01)
  91.       (progn
  92.         (setq l2 (* (1+ (fix (/ (* 0.25 l2) 50.0))) 50))
  93.         (if (< l2 700.0)
  94.           (setq l2 700.0)
  95.         )
  96.       )
  97.     )
  98.   )
  99.   (setvar "osmode" 0)
  100.   (setq an (angle pt1 pt2))
  101.   (if (> l1 0.01)
  102.     (setq pt3 (polar pt1 (+ an 3.1415926) l1)
  103.           s1  (rtos l1 2 0)
  104.     )
  105.     (setq pt3 (polar pt1 an (* 0.5 no1))
  106.           a1  ""
  107.     )
  108.   )
  109.   (if (> l2 0.01)
  110.     (setq pt4 (polar pt2 an l2)
  111.           s2  (rtos l2 2 0)
  112.     )
  113.     (setq pt4 (polar pt2 (+ an 3.1415926) (* 0.5 no1))
  114.           s2  ""
  115.     )
  116.   )
  117.   (setq pt5 (polar pt3 (- an 1.570796) (* 2.5 no1)))
  118.   (setq pt6 (polar pt4 (- an 1.570796) (* 2.5 no1)))
  119.   (setq cula (getvar "clayer"))
  120.   (command "layer" "m" "r0" "")
  121.   (command "line" pt5 pt3 pt4 pt6 "")
  122.   (if (> l1 0.01)
  123.     (progn
  124.       (setq pt5        (list (* 0.5 (+ (car pt1) (car pt3)))
  125.                       (* 0.5 (+ (cadr pt1) (cadr pt3)))
  126.                 )
  127.       )
  128.       (if (< an pi)
  129.         (setq pt5 (polar pt5 (- an (* 0.5 pi)) (* 1.8 no1)))
  130.         (setq pt5 (polar pt5 (+ an (* 0.5 pi)) (* 1.8 no1)))
  131.       )
  132.       (command "layer" "m" "dt" "")
  133.       (setvar "textstyle" "tz")
  134.       (command "text" "mc" pt5 (* 2.0 no1) (angtos an 0 4) s1)
  135.     )
  136.   )
  137.   (if (> l2 0.01)
  138.     (progn
  139.       (setq pt6        (list (* 0.5 (+ (car pt2) (car pt4)))
  140.                       (* 0.5 (+ (cadr pt2) (cadr pt4)))
  141.                 )
  142.       )
  143.       (if (< an pi)
  144.         (setq pt6 (polar pt6 (- an (* 0.5 pi)) (* 1.8 no1)))
  145.         (setq pt6 (polar pt6 (+ an (* 0.5 pi)) (* 1.8 no1)))
  146.       )
  147.       (command "layer" "m" "dt" "")
  148.       (setvar "textstyle" "tz")
  149.       (command "text" "mc" pt6 (* 2.0 no1) (angtos an 0 4) s2)
  150.     )
  151.   )
  152.   (setvar "textstyle" te)
  153.   (setvar "clayer" cula)
  154.   (setvar "osmode" os)
  155.   (princ)
  156. )

  157. (defun c:dj (/ os pt1 pt2 pt3 pt4 cula an)
  158.   (if (null no1)
  159.     (setq no1 100.0)
  160.   )
  161.   (setq no1 (UREAL 7 "" "\n比例" no1))
  162.   (setq os (getvar "osmode"))
  163.   (setvar "cmdecho" 0)
  164.   (setvar "osmode" 512)
  165.   (setq pt1 (osnap (getpoint "\nPick the first point:") "near"))
  166.   (setvar "osmode" 128)
  167.   (setq pt2 (getpoint pt1 "\nPick the second point:"))
  168.   (setvar "osmode" 0)
  169.   (setq an (angle pt1 pt2))
  170.   (setq pt3 (polar pt1 an (* 0.5 no1)))
  171.   (setq pt4 (polar pt2 (+ an 3.1415926) (* 0.5 no1)))
  172.   (setq        cula (getvar "clayer")
  173.         an   (/ (* an 180) 3.1415926)
  174.   )
  175.   (command "layer" "s" "r0" "")
  176.   (command "line" pt3 pt4 "")
  177.   (command "insert" "g2" pt3 blx blx an)
  178.   (command "insert" "g2m" pt4 blx blx an)
  179.   (command "layer" "s" cula "")
  180.   (setvar "osmode" os)
  181.   (princ)
  182. )
  183. (defun trn (s1 / s0 s2 n0 j)
  184.   (setq        s0 ""
  185.         j  1
  186.   )
  187.   (while (<= j (strlen s1))
  188.     (setq s2 (substr s1 j 1))
  189.     (if        (= s2 "-")
  190.       (setq s0 (strcat s0 "%%130"))
  191.       (if (= s2 "+")
  192.         (setq s0 (strcat s0 "%%131"))
  193.         (if (= s2 "*")
  194.           (setq s0 (strcat s0 "x"))
  195.           (setq s0 (strcat s0 s2))
  196.         )
  197.       )
  198.     )
  199.     (setq j (1+ j))
  200.   )
  201.   (setq s2 s0)
  202. )

  203. (defun c:j1 () (j12 1))
  204. (defun c:j2 () (j12 2))

  205. (defun j12 (n12        / x y b        a0 a1 a2 cm bi os ln ent entlist na pt pt1 pt2
  206.             lay)
  207.   (setq cm (getvar "cmdecho"))
  208.   (setq bi (getvar "blipmode"))
  209.   (setq os (getvar "osmode"))
  210.   (setq ln (getvar "CLAYER"))
  211.   (setvar "cmdecho" 0)
  212.   (setvar "blipmode" 0)
  213.   (setvar "osmode" 0)
  214.   (if (= n12 1)
  215.     (setq bna1 "g1"
  216.           bna2 "g1m"
  217.     )
  218.     (setq bna1 "g2"
  219.           bna2 "g2m"
  220.     )
  221.   )
  222.   (prompt "\nPick a line: ")
  223.   (setq ent (entsel))
  224.   (setq entlist (entget (car ent)))
  225.   (setq na (cdr (assoc 0 entlist)))
  226.   (setq b (/ no1 100.0))
  227.   (if (= na "LINE")
  228.     (progn
  229.       (setq pt1 (cdr (assoc 10 entlist)))
  230.       (setq pt2 (cdr (assoc 11 entlist)))
  231.       (setq lay (cdr (assoc 8 entlist)))
  232.       (initget 1)
  233.       (setq pt (getpoint "\nPick a point to direct:"))
  234.       (setq y (< (distance pt1 pt) (distance pt2 pt)))
  235.       (setvar "clayer" lay)
  236.       (setq a1 (angle pt1 pt2)
  237.             a2 (angle pt2 pt1)
  238.             a0 (angle pt1 pt)
  239.       )
  240.       (setq x (- a1 a0))
  241.       (if (< x 0.0)
  242.         (setq x (+ (* 2.0 pi) x))
  243.       )
  244.       (if (or (< x pi))
  245.         (if y
  246.           (command "insert" bna2 pt1 b b (/ (* 180 a2) pi))
  247.           (command "insert" bna1 pt2 b b (/ (* 180 a2) pi))
  248.         )
  249.         (if y
  250.           (command "insert" bna1 pt1 b b (/ (* 180 a1) pi))
  251.           (command "insert" bna2 pt2 b b (/ (* 180 a1) pi))
  252.         )
  253.       )
  254.     )
  255.     (princ "\nSelect is not a line!")
  256.   )
  257.   (setvar "cmdecho" cm)
  258.   (setvar "blipmode" bi)
  259.   (setvar "osmode" os)
  260.   (setvar "CLAYER" ln)
  261.   (princ)
  262. )

  263. (defun c:jt (/ bi os ln ent entlist na pt0 pt1 pt2 pt3)
  264.   (setq bi (getvar "blipmode"))
  265.   (setq os (getvar "osmode"))
  266.   (setq ln (getvar "CLAYER"))
  267.   (setvar "cmdecho" 0)
  268.   (setvar "blipmode" 0)
  269.   (setvar "osmode" 0)
  270.   (prompt "\nPick a line: ")
  271.   (if (setq ent (entsel))
  272.     (progn
  273.       (setq pt0 (cadr ent))
  274.       (setq entlist (entget (car ent)))
  275.       (setq na (cdr (assoc 0 entlist)))
  276.       (if (= na "LINE")
  277.         (progn
  278.           (setq pt1 (cdr (assoc 10 entlist)))
  279.           (setq pt2 (cdr (assoc 11 entlist)))
  280.           (setvar "clayer" "D0")
  281.           (if (> (distance pt1 pt0) (distance pt2 pt0))
  282.             (setq pt3 pt1
  283.                   pt1 pt2
  284.                   pt2 pt3
  285.             )
  286.           )
  287.           (setq pt3 (polar pt1 (angle pt1 pt2) (* no1 3.5)))
  288.           (command "pline" pt1 "w" "0" (* 0.8 no1) pt3 "")
  289.         )
  290.         (princ "\nSelect is not a line!")
  291.       )
  292.     )
  293.     (princ "\nSelect is empty!")
  294.   )
  295.   (setvar "blipmode" bi)
  296.   (setvar "osmode" os)
  297.   (setvar "CLAYER" ln)
  298.   (princ)
  299. )

  300. (defun c:g (/ la os tes ss s pt0 pt1 pt2 pt3 pt4 x1 y1 x2 y2 ang p r h)
  301.   (setvar "cmdecho" 0)
  302.   (setq la (getvar "clayer"))
  303.   (setq        os (getvar "osmode")
  304.         r  (* 2.5 no1)
  305.         h  (* 2.25 no1)
  306.   )
  307.   (setq tes (getvar "textstyle"))
  308.   (setvar "osmode" 0)
  309.   (if (= gna nil)
  310.     (setq gna 1)
  311.   )
  312.   (setq s (entsel "\nPick the GJ_line:"))
  313.   (if s
  314.     (progn
  315.       (setq pt0        (cadr s)
  316.             s        (car s)
  317.       )
  318.       (redraw s 3)
  319.       (setq ss (entget s))
  320.       (if (= (cdr (assoc 0 ss)) "LINE")
  321.         (progn
  322.           (setq pt0 (osnap pt0 "Nearest"))
  323.           (setq pt1 (cdr (assoc 10 ss)))
  324.           (setq pt2 (cdr (assoc 11 ss)))
  325.           (setq        x1 (car pt1)
  326.                 y1 (cadr pt1)
  327.                 x2 (car pt2)
  328.                 y2 (cadr pt2)
  329.           )
  330.           (if (not (or (and (< (abs (- x1 x2)) 0.00001) (< y1 y2))
  331.                        (< x1 x2)
  332.                    )
  333.               )
  334.             (setq p   pt2
  335.                   pt2 pt1
  336.                   pt1 p
  337.             )
  338.           )
  339.           (setq ang (angle pt1 pt2))
  340.           (initget 1)
  341.           (setq pt3 (getpoint pt0 "\nPick the directive point:"))
  342.           (setq p (- (angle pt1 pt3) ang))
  343.           (if (< p 0.0)
  344.             (setq p (+ (* 2.0 pi) p))
  345.           )
  346.           (if (< p pi)
  347.             (setq pt4 (polar pt0 (+ ang (* 0.5 pi)) r))
  348.             (setq pt4 (polar pt0 (- ang (* 0.5 pi)) r))
  349.           )
  350.           (setq pt0 (getint (strcat "\nG_name: <" (itoa gna) "> ")))
  351.           (if (/= pt0 nil)
  352.             (setq gna pt0)
  353.           )
  354.           (setvar "textstyle" "tz")
  355.           (command "layer" "m" "dt" "")
  356.           (command "circle" pt4 r)
  357.           (command "text" "m" pt4 h (/ (* 180.0 ang) pi) (itoa gna))
  358.         )
  359.         (princ "\nPlease select a GJ_line!")
  360.       )
  361.       (redraw s 4)
  362.     )
  363.     (princ "\nPlease select a entity!")
  364.   )
  365.   (setvar "textstyle" tes)
  366.   (setvar "osmode" os)
  367.   (setvar "clayer" la)
  368.   (princ)
  369. )

  370. (defun c:xx (/ os la l1 es pt1 pt2 pt3 pt4 pt an ss s n i)
  371.   (setq os (getvar "osmode"))
  372.   (setvar "cmdecho" 0)
  373.   (setq la (getvar "clayer"))
  374.   (setvar "osmode" 0)
  375.   (setq l1 (entsel "Pick first line:"))
  376.   (if l1
  377.     (if        (/= (cdr (assoc 0 (entget (car l1)))) "LINE")
  378.       (setq l1 nil)
  379.     )
  380.   )
  381.   (if l1
  382.     (progn
  383.       (setq l1 (car l1)
  384.             es (entget l1)
  385.       )
  386.       (redraw l1 3)
  387.       (setq pt1 (cdr (assoc 10 es)))
  388.       (setq pt2 (cdr (assoc 11 es)))
  389.       (setq an (angle pt1 pt2))
  390.       (setq ss (ssget))
  391.       (setq n (sslength ss)
  392.             i 0
  393.       )
  394.       (setvar "clayer" "D0")
  395.       (repeat n
  396.         (setq s        (ssname ss i)
  397.               i        (1+ i)
  398.         )
  399.         (setq es (entget s))
  400.         (if (= (cdr (assoc 0 es)) "LINE")
  401.           (progn
  402.             (setq pt3 (cdr (assoc 10 es)))
  403.             (setq pt4 (cdr (assoc 11 es)))
  404.             (setq pt (inters pt1 pt2 pt3 pt4))
  405.             (if        pt
  406.               (command "insert"
  407.                        "G3"
  408.                        pt
  409.                        (/ no1 100)
  410.                        ""
  411.                        (/ (* an 180) pi)
  412.               )
  413.             )
  414.           )
  415.         )
  416.       )
  417.       (redraw l1 4)
  418.     )
  419.   )
  420.   (setvar "clayer" la)
  421.   (setvar "osmode" os)
  422.   (princ)
  423. )

  424. (defun c:dt (/ pt1 pt2 an osm str pe)
  425.   (setvar "cmdecho" 0)
  426.   (setvar "orthomode" 1)
  427.   (setq osm (getvar "osmode"))
  428.   (setvar "osmode" 0)
  429.   (if (= dis nil)
  430.     (setq dis 200.0)
  431.   )
  432.   (setq pe t)
  433.   (while (/= pe nil)
  434.     (setq str (strcat "\nDistance{ " (rtos dis 2 0) " }//First point:"))
  435.     (initget "Distance Exit")
  436.     (setq pt0 (getpoint str))
  437.     (cond
  438.       ((= pt0 nil) (setq pe nil))
  439.       ((= pt0 "Exit") (setq pe nil))
  440.       ((= pt0 "Distance") (setq dis (getdist "\nDistance:")))
  441.       (t
  442.        (progn
  443.          (setq pt1 (getcorner pt0 "\nSecond point:"))
  444.          (command "stretch" "c" pt0 pt1 "")
  445.          (setq pt2 (getpoint pt1 "\nDirecte point:"))
  446.          (setq an (angtos (angle pt1 pt2) 0 2))
  447.          (command pt1 (strcat "@" (rtos dis 2 1) "<" an))
  448.        )
  449.       )
  450.     )
  451.   )
  452.   (setvar "osmode" osm)
  453.   (princ)
  454. )
  455. (defun ureal (bit kwd msg def / inp)
  456.   (if def
  457.     (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
  458.           bit (* 2 (fix (/ bit 2)))
  459.     )
  460.     (setq msg (strcat "\n" msg ": "))
  461.   )
  462.   (initget bit kwd)
  463.   (setq inp (getreal msg))
  464.   (if inp
  465.     inp
  466.     def
  467.   )
  468. )
  469. (princ)[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-7 20:07:20 | 显示全部楼层
这里太谢谢 xyp1964版主了   不过还有问题没有解决好 就是底筋时出现 Pick the second point:0.000000 未知命令“2”。按 F1 查看帮助。未知命令“G2M”。按 F1 查看帮助。 0.000000
; 错误: 函数被取消 而且那个弯起勾没有弄好  钢筋也就是gj这个命令也没有弄好 出现Direction Point:; 错误: 参数类型错误: numberp: nil 希望版主能再次帮忙 再次感谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 19:28 , Processed in 0.311802 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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