明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: wanhongron

★边坡台阶自动开挖程序求实现

  [复制链接]
 楼主| 发表于 2012-7-10 22:54:16 | 显示全部楼层
只是还有个小问题,台阶从上面开始,开始点不在线上,即是没有闭合,希望从最上面开始的时候最上面闭合,最下面可不闭合,再次麻烦哥哥了。。

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-10 22:57:25 | 显示全部楼层
zz命令非常好,就是zz1命令麻烦再完善一下。
发表于 2012-7-11 10:15:01 | 显示全部楼层
(Defun c:zz () (_DrawSect (car (entsel)) 400. T))
(Defun c:zz1 () (_DrawSect (car (entsel)) 400. nil))
(Defun _DrawSect
       (pl dy dir / _FixVertex DX EPT INT LL OBJ P1 P2 PTX RTN SPT UR VLO)
  (Defun _FixVertex (ptx flag / BB BX DIR PT RTN VTX)
    (if        (equal flag (* 0.5 pi) 0.001)
      (setq bx (caar ptx))
      (setq bx (car (last ptx)))
    )
    (setq dir (- (car (last ptx)) (caar ptx)))
    (foreach pt        ptx
      (setq bb (car pt)
            bb (- bb bx)
            bb (* 100 (fix (+ 0.5 (* bb 0.01))))
            bb (+ bb bx)
      )
      (if (> dir 0)
        (while (> (car pt) bb) (setq bb (+ bb 100)))
        (while (< (car pt) bb) (setq bb (- bb 100)))
      )
      (setq rtn (cons (cons bb (cdr pt)) rtn))
    )
    (setq rtn (reverse rtn)
          rtn (append rtn (list (last rtn)))
    )
    (while (cdr rtn)
      (setq pt        (car rtn)
            ptx        (cadr rtn)
            rtn        (cdr rtn)
            vtx        (cons (cons 10 pt) vtx)
            vtx        (cons (list 10 (car ptx) (cadr pt)) vtx)
      )
    )
    vtx
  )
  (setq vlo (vlax-ename->vla-object pl))
  (vla-getboundingbox vlo 'll 'ur)
  (setq        ll (trans (vlax-safearray->list ll) 0 1)
        ur (trans (vlax-safearray->list ur) 0 1)
        dx (- (car ur) (car ll))
  )
  (if dir
    (setq p1  (polar ll pi (* 0.1 dx))
          p2  (polar ll 0 (* 1.2 dx))
          dir (* 0.5 pi)
    )
    (setq p1  (polar ur 0 (* 0.1 dx))
          p2  (polar ur pi (* 1.2 dx))
          dir (* 1.5 pi)
    )
  )
  (entmake (list (cons 0 "line") (cons 10 p1) (cons 11 p2)))
  (setq obj (vlax-ename->vla-object (entlast)))
  (while
    (and
      (setq int (vla-intersectwith vlo obj acExtendNone))
      (null
        (vl-catch-all-error-p
          (vl-catch-all-apply
            '(lambda ()
               (setq
                 int (vlax-safearray->list (vlax-variant-value int))
               )
             )
          )
        )
      )
      (= (length int) 3)
    )
     (setq rtn (cons int rtn))
     (vla-move obj
               (vlax-3d-point '(0. 0. 0))
               (vlax-3d-point (polar '(0. 0. 0.) dir dy))
     )
  )
  (vla-erase obj)
  (setq        ptx (car rtn)
        spt (trans (vlax-curve-getstartpoint vlo) 0 1)
        ept (trans (vlax-curve-getendpoint vlo) 0 1)
  )
  (if (> (abs (- (cadr spt) (cadr ptx)))
         (abs (- (cadr ept) (cadr ptx)))
      )
    (setq rtn (cons ept rtn))
    (setq rtn (cons spt rtn))
  )
  (setq        rtn (_FixVertex
              (vl-sort rtn '(lambda (p1 p2) (< (cadr p1) (cadr p2))))
              dir
            )
        rtn (append (list (cons 0 "lwpolyline")
                          (cons        100
                                "AcDbEntity"
                          )
                          (cons 100 "AcDbPolyline")
                          (cons 90 (length rtn))
                    )
                    rtn
            )
  )
  (entmake rtn)
  (princ)
)
 楼主| 发表于 2012-7-12 00:25:09 | 显示全部楼层
MMMMM哥哥,你太有才了,也很细心,非常谢谢
发表于 2019-11-26 11:17:11 | 显示全部楼层
需要这个插件,实用
发表于 2020-2-28 09:13:39 | 显示全部楼层
这个非常好用,感谢nnnnnnnnnn兄
发表于 2020-2-29 13:31:26 | 显示全部楼层
这个非常好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-18 07:29 , Processed in 0.142387 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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