h85760338 发表于 2014-10-23 16:13:57

列出计算式并显示计算结果


newbuser 发表于 2014-12-2 16:26:06

这个应该不难,论坛里有很多类似的东西。

wangshuping42 发表于 2014-12-2 19:38:51

愿付费开发,可以联系我。

newbuser 发表于 2014-12-4 10:31:38

本帖最后由 newbuser 于 2014-12-4 18:25 编辑

(defun c:tt (/ lst clst)
(setq ss (ssget '((0 . "LINE"))));选择直线
(setq i 0)
(repeat (sslength ss)
    (setq e(ssname ss i)
    el (entget e)
    q(assoc 10 el)
    z(assoc 11 el)
    )
    (setq a (cdr q))
    (setq b (cdr z))
    (setq
      pt_Ymax (car (vl-sort (list a b)
          '(lambda (u v) (> (cadr u) (cadr v)))
       )
      )
    )
    ;;Y值大的坐标
    (setq
      pt_Ymin (car (vl-sort (list a b)
          '(lambda (u v) (< (cadr u) (cadr v)))
       )
      )
    )
    ;;X值大坐标
    (setq ang (angle pt_Ymin pt_Ymax))
    ;;文字竖直朝左角度
          ;(setq pt (list (car (cdr q)) (max (caddr q) (caddr z)) 0))            ;;找出Y值大的坐标
    (setq ss1 (ssget "f" (list (cdr q) (cdr z)) '((0 . "TEXT"))))
          ;获取通过该直线的文字选择集
    (setq e1(ssname ss1 0)
    el1 (entget e1)
    h1(assoc 40 el1)
    h   (cdr h1)
    )
    (setq mrk (atoi (cdr (assoc 1 el1))))
    ;;获取钢筋编号(将字符串转为整数)
    (setq e-obj (vlax-ename->vla-object e))
    ;;转为vla对象
    (setq l (vla-get-length e-obj))
    (setq clst (append clst (list l)))
    ;;获取线的长度
    (setq str-len (rtos l))
    ;;单根直线长度字符串
          ;(setq ang (vla-get-angle e-obj))         ;;获取线的角度
;;;       (setq lst nil)
    (setq lst (append lst (list (list mrk str-len))))
    (entmake (list '(0 . "TEXT")
       (cons 8 "0")
       (append '(10) pt_Ymax)
       (append '(11) pt_Ymax)
       h1
       (cons 1 str-len)
       (cons 50 ang)
       (cons 71 0)
       (cons 72 2)
       (cons 73 0)
       )
    )
    (setq i (1+ i))
)
(setq
    llst (vl-sort lst
      (function (lambda (e1 e2) (< (car e1) (car e2))))
   )
)
(setq p1 (getpoint "\n 请指定X方向表格左上角位置==>> "))
;;表格左上角坐标
(setqpz   (polar p1 0 (* 15.75 h))
;;表格右上角坐标
p1_x (polar p1 4.71239 (* 1.4 h))
pz_x (polar p1_x 0 (* 15.75 h))
p_c(polar p1 0 (* 5.25 h))
p_g(polar p1 0 (* 10.5 h))
)
(command "line" p1 pz "")
(command "line" p1_x pz_x "")
;;;   (setq btxlst (list (list p1 pz) (list p1_x pz_x)))
;;;   (点表生成直线 btxlst)
(setqpp(polar p1 4.71239 (* 1.275 h))
pbh (polar pp 0 (* h 0.125))
;;编号插入点
pcd (polar pp 0 (* h 5.375))
;;长度插入点
pgs (polar pp 0 (* h 10.625))
      ;;根数插入点
)
(setq n 0)
(repeat (length llst)
    (setq pq (polar p1 4.71239 (* (+ (* n 1.4) 2.8) h)))
    ;;文字下横线起点
    (setq pe (polar pq 0 (* 15.75 h)))
    ;;由起点算出终点
    (setq bm1 (polar pbh 4.71239 (+ (* 1.4 h) (apply '* (list 1.4 n h))))
    bm2 (polar bm1 0 (* 5.25 h))
    bm3 (polar bm1 0 (* 10.5 h))
    )
    (setq zlst (nth n llst))
    (entmake (list '(0 . "TEXT")
       (cons 1 (itoa (car zlst)))
       h1
       (append '(10) bm1)
       )
    )
    (entmake (list '(0 . "TEXT")
       (cons 1 (cadr zlst))
       h1
       (append '(10) bm2)
       )
    )
    (entmake
      (list '(0 . "TEXT") (cons 1 "1") h1 (append '(10) bm3))
    )
    (command "line" pq pe "")
    (setq n (1+ n))
)
(setqpd1 (polar p1
       4.71239
       (apply '* (list (+ (length llst) 2) 1.4 h))
      )
pd2 (polar p_c
       4.71239
       (apply '* (list (+ (length llst) 2) 1.4 h))
      )
pd3 (polar p_g
       4.71239
       (apply '* (list (+ (length llst) 2) 1.4 h))
      )
pd4 (polar pz
       4.71239
       (apply '* (list (+ (length llst) 2) 1.4 h))
      )
)
(setqphz (polar pbh
       4.71239
       (apply '* (list (+ (length llst) 1) 1.4 h))
      )
pz1 (polar phz 0 (* h 5.375))
pz2 (polar phz 0 (* h 10.625))
)

(command "line" p1 pd1 "")
(command "line" p_c pd2 "")
(command "line" p_g pd3 "")
(command "line" pz pd4 "")
(command "line" pd1 pd4 "")
(setqbtlst
   (list (list "编号" pbh)
         (list "长度" pcd)
         (list "根数" pgs)
         (list "汇总" phz)
         (list (rtos (apply '+ clst) 2 3) pz1)
         (list (rtos (length llst) 2 0) pz2)
   )
)
;;标题文字坐标插入点表
(foreach n btlst
    (entmake (list '(0 . "TEXT")
       (cons 1 (car n))
       (append '(10) (cadr n))
       h1
       )
    )
)
;;标题文字生成
)已经初步形成了,不过,沿X方向你自己看着修改下吧。希望能够满足您的要求。

852456 发表于 2018-8-11 22:44:44

看帖回帖是美德
页: [1]
查看完整版本: 列出计算式并显示计算结果