vlisp2012 发表于 2011-11-26 11:49:03

批量测量弧长半径弓高

(defun c:hgg ();;;;;;批量测量弧长半径弓高
(setq ssg (ssget '((0 . "ARC"))))
   
(setq i 0)
(repeat (setq en (sslength ssg))
    (progn (setq ee (ssname ssg i))
      
       
(setq        ve (vlax-ename->vla-object ee)
        pt (vlax-curve-getPointAtDist
             ve
             (* 0.5 (vla-get-ArcLength ve))
           )
)
      (setq al (vla-get-ArcLength ve))
      (setq banjing (vla-get-Radius ve))
      (setq jiaodu (vla-get-TotalAngle ve))
      (setq gonggao (- banjing (* banjing (cos (/ jiaodu 2)))))
   
(command "ucs" "v" )
(vl-cmdf "text"
           "j"
           "m"
           (trans pt 0 1)
          ""
          ""
           (strcat "\n半径:"(rtos banjing 2 0 )""
                   "拱高:"(rtos gonggao 2 0)""
                   "弧长:"(rtos al 2 0)) "" "")
      )
   (command "ucs" "p" )
          (setq i (1+ i))
      )

)

aodaliya 发表于 2011-11-26 12:39:54

全是Vlisp函数啊,不懂啊?

874185423 发表于 2011-11-26 12:42:16

好东西多谢分享

lpl 发表于 2012-7-9 23:55:30

要是能保留两位小数,同时附上单位,就好了。

yoyoho 发表于 2012-7-10 07:57:48

不错感谢分享!

haoryh 发表于 2012-9-16 16:33:18

这个好像很强大,下来试试,多谢楼主分享!

yshf 发表于 2012-9-16 22:17:59


;;;改了一下
(defun c:ggg()
   (vl-load-com)
   (setq DOC (vla-get-activedocument (vlax-get-acad-object))
           zg2.5;文字高度
   )
   (if (= (tblsearch "style" (setq ztm "stz0.7")) nil)
         (command "_style" ztm"宋体" "" 0.7 "" "" "")
   )
   (if (setq ssa (ssget '((0 . "arc"))))
         (vlax-for ent (vla-get-activeselectionset DOC)
             (setq p0 (vlax-curve-getstartpoint ent)
                     pn (vlax-curve-getendpoint ent)
                     pz (mapcar '* '(0.5 0.5) (mapcar '+ p0 pn))
                     rr (vla-get-Radius ent)
                     ll (vla-get-ArcLength ent)
                     pm (vlax-curve-getPointAtDist ent (* 0.5 ll))
                     gg (distance pm pz)
                     an (- (angle pz pm) (* 0.5 pi))
             )             
               (setq obj (vla-addtext (vla-get-modelspace DOC)
                                    (strcat "半径:" (rtos rr 2 3 ) ""
                                              "拱高:" (rtos gg 2 3) ""
                                              "弧长:" (rtos ll 2 3)
                                      )
                                      (vlax-3D-point pm)
                                      zg
                       )
             )
             (vla-put-StyleName obj ztm)
             (vla-put-Alignment obj 10)
             (vla-put-TextAlignmentPoint obj (vlax-3D-point pm))
             (vla-put-Rotation obj an)
       )
   )
   (princ)
)

页: [1]
查看完整版本: 批量测量弧长半径弓高