明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: ysq101

[提问] 求大师帮忙看一下 关于PL线 "凹位"的判断

[复制链接]
发表于 2017-10-20 15:18:57 | 显示全部楼层
本帖最后由 lijiao 于 2017-10-20 15:26 编辑
  1. (defun c:aopl (/ AREA AREAS ENT I N PT PT1 PT2 PT3 PTS PTS0 SS VLANAME)
  2.   (if (setq ss (ssget '((0 . "*POLYLINE") (70 . 1))))
  3.     (progn
  4.       (setq i -1)
  5.       (repeat (sslength ss)
  6.         (setq ent (ssname ss (setq i (1+ i))))
  7.         (setq ent (vlax-ename->vla-object ent))
  8.         (setq pts (vlax-get ent 'Coordinates ))
  9.         (setq pts0 pts)
  10.         (setq Area (vlax-get ent 'Area))
  11.         (setq vlaname (vlax-get ent 'ObjectName))
  12.         (if (= vlaname "AcDb3dPolyline")
  13.           (setq n 3)
  14.           (setq n 2)
  15.           )
  16.         (setq pt (getpt pts n))
  17.         (setq pts (cadr pt)
  18.               pt (car pt))
  19.         (setq Areas '())
  20.         (while (> (length pts) n)
  21.           (setq pt1 (GETPT pts n)
  22.                 pts (cadr pt1)
  23.                 pt2 (GETPT pts n)
  24.           )
  25.           (setq pt3 (append pt (car pt1) (car pt2)))
  26.           (vlax-put ent 'Coordinates pt3)
  27.           (setq Areas (cons (vlax-get ent 'Area) Areas))
  28.           )
  29.         (vlax-put ent 'Coordinates pts0)
  30.         (if (not (equal Area (apply '+ Areas) 0.001))
  31.           (vlax-put ent 'color 1)
  32.           )
  33.         )
  34.       )
  35.     )
  36.   (princ)
  37.   )
  38. (defun getpt (pts n / out)
  39.   (repeat n
  40.     (setq out (cons (car pts) out)
  41.           pts (cdr pts))
  42.     )
  43.   (list (reverse out) pts)
  44.   )
 楼主| 发表于 2017-10-20 17:37:17 | 显示全部楼层

还是不能正常运行
 楼主| 发表于 2017-10-20 17:38:44 | 显示全部楼层
llsheng_73 发表于 2017-10-20 13:45
整个多段线方向并不需要这条多段的所有点参与计算,实际上只需要取出四个点(其外接正矩形的四个角点到该 ...

黄大师对于PL线的处理及IF有独特的见解。。。之前我关于PL线程序大多数采用黄大师的子程序
发表于 2017-10-21 09:03:38 | 显示全部楼层
回帖是一种美德!感谢楼主的无私分享 谢谢
发表于 2017-10-21 11:48:38 | 显示全部楼层
本帖最后由 xyp1964 于 2017-10-21 13:30 编辑


  1. ;; 2017-10-21 tt(凹点标记)
  2. (defun c:tt ()
  3.   (setq i -1)
  4.   (if (setq ss (ssget '((0 . "*PolyLINE"))))
  5.     (while (setq s1 (ssname ss (setq i (1+ i))))
  6.       (foreach pt (xyp-AoPtn (xyp-Vertexs s1 0))
  7.         (xyp-Cross pt 500 0)
  8.       )
  9.     )
  10.   )
  11.   (princ)
  12. )


本帖子中包含更多资源

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

x
 楼主| 发表于 2017-10-21 12:09:56 | 显示全部楼层
xyp1964 发表于 2017-10-21 11:48
;; 2017-10-21 tt(凹点标记)
(defun c:tt ()
  (setq i -1)

院长的函数库存可真多
发表于 2018-2-6 14:55:13 | 显示全部楼层
太强大了学习了
发表于 2021-8-8 15:47:08 | 显示全部楼层
根据面积判断凹凸
  1. (defun c:vv (/ ent obj ptlst f area)
  2.   (vl-load-com)
  3.   (setq ent (car (entsel)))
  4.   (setq obj (vlax-ename->vla-object ent))
  5.   (setq        ptlst
  6.          (mapcar
  7.            'cdr
  8.            (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget ent))
  9.          )
  10.   )
  11.   (setq        f
  12.          (lambda (lst)
  13.            (apply '+
  14.                   (mapcar
  15.                     '(lambda (x y)
  16.                        (* 0.5 (* (- (car y) (car x)) (+ (cadr x) (cadr y))))
  17.                      )
  18.                     lst
  19.                     (append (cdr lst) (list (car lst)))
  20.                   )
  21.            )
  22.          )
  23.   )
  24.   (setq area (f ptlst))
  25.   (if (vl-remove-if-not
  26.         '(lambda (x) (> (f (vl-remove x ptlst)) area))
  27.         ptlst
  28.       )
  29.     (vla-put-color (vlax-ename->vla-object ent) 1)
  30.   )
  31.   (princ)
  32. )
 楼主| 发表于 2021-8-9 17:57:05 | 显示全部楼层
kkq0305 发表于 2021-8-8 15:47
根据面积判断凹凸

好家伙...差不多四年才回贴...我早又忘记了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-5 10:00 , Processed in 0.156114 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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