305341043 发表于 2018-9-19 17:29:00

选矩形框画开门线

如截图中:选择矩形框任意一条边上的点,由此边的中点画直线到对角的端点上。

yshf 发表于 2019-6-14 10:19:00

;试用以下程序
(defun c:kmx()
   (vl-load-com)
   (setq cmd (getvar "cmdecho"))
   (setq osm (getvar "osmode"))
   (setvar "cmdecho" 0)
   (setvar "osmode" 0)
   (command "_undo" "be")
   (while (setq ssa (ssget ":S" '((0 . "LWPOLYLINE"))))
          (setq entx (car (ssnamex ssa)))
          (setq obj(vlax-ename->vla-object (cadr entx)))
          (setq pae(vlax-curve-getendparam obj))
          (if (or (and (= pae 4.0) (= (vlax-curve-isClosed obj) t))
                  (and (= pae 4.0) (equal (vlax-curve-getstartpoint obj) (vlax-curve-getendpoint obj)))
            )
            (progn
                  (setq pt   (cadr (last entx)))
                  (setq pt0(vlax-curve-getclosestpointto obj pt))
                  (setq par(vlax-curve-getparamatpoint obj pt0))
                  (setq pai(fix par))
                  (setq pai-1 (- pai 1.0))
                  (if ( pai+1 pae) (setq pai+1 (- pai+1 pae)))
                  (setq pmid(vlax-curve-getpointatparam obj (+ pai 0.5)))
                  (setq pt1   (vlax-curve-getpointatparam obj pai-1))
                  (setq pt2   (vlax-curve-getpointatparam obj pai+1))
                  (command "_pline" pt1 pmid pt2 "")
             )
             (alert "你所选取的不由4点组成的闭合矩形!")
          )
   )
   (command "_undo" "e")
   (setvar "osmode" osm)
   (setvar "cmdecho" cmd)
   (princ)
)

tfanghui 发表于 2022-7-17 23:50:00


楼主看看这个可用吗
(出处: 乐筑天下CAD社区)

00放飞梦想00 发表于 2020-3-23 16:39:00


不错代码,开启哪边点哪边很好理解,可考虑加列表选择,同时指定下线型及颜色就更完美了!顶顶顶
望回复源码

pastor 发表于 2018-9-24 22:27:00

已完成。具体咨询QQ:314328161门框


1784290342 发表于 2018-10-26 15:26:00

这么简单,需要的话,我给你写,算白帮你忙了

305341043 发表于 2019-2-22 11:45:00


抽空帮我写个呗

maxli 发表于 2019-6-4 17:20:00

写出来的发上去啊

305341043 发表于 2019-6-7 16:54:00

没见到上传呀

bai2000 发表于 2019-6-15 09:43:00

改为在四边形中点取,更好
页: [1] 2
查看完整版本: 选矩形框画开门线