明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1106|回复: 11

中心画圆请高手指导下

[复制链接]
发表于 2023-6-27 16:27:33 | 显示全部楼层 |阅读模式
在选择对象中心画圆

我想把中心圆放在图层“CSK”上(没有则新建图层)颜色:黄色


请大佬看下要怎么改









(defun c:csk (/ dxf10 i p0 p1 p2 pp s1 ss)
        (defun dxf10 (e / s)  ;10组码取点
                (if (setq s
                                        (mapcar 'cdr
                                                (vl-remove-if-not '(lambda (x) (= (car x) 10))(entget e))
                                        )
                                )
                        (if (= 1 (length s))(car s)s)
                )
        )
  (setq i -1)
  (if (setq ss (ssget ":S"(list '(0 . "LWPOLYLINE"))))
    (while (and(setq s1 (ssname ss (setq i (1+ i)))))               
                        (setq pp(dxf10 s1)
                                p1(car pp)
                                p2(caddr pp)
                        )
                        (setq p0(mapcar '(lambda(x)(* 0.5 x)) (mapcar '+ p1 p2)))
                        (vla-AddCircle (vla-get-modelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))(vlax-3D-point p0) (* 0.02 (distance p1 p2)))
                        (vla-put-layer (vlax-ename->vla-object (entlast)) "图层3")
                        (entmake (list '(0 . "LINE") (cons 8  "图层4")(cons 10 p0)  (cons 11 p1)  ))
                )
  )
        (princ)
)









发表于 2023-6-27 17:07:53 | 显示全部楼层
异形的中心不太好确定,楼主可以截图在哪些图形中,画圆,下面是创建图层的代码
;;;设置当前图层,没有就创建
(defun slay ()
  (setvar "cmdecho" 0) ;_关闭命令提示
  (if (= nil (tblsearch "layer" "csk"))
    (progn (command "-layer" "new" "csk" "c" "2" "csk" ""))
  )
  (command "-layer" "s" "csk" "")
  (setvar "cmdecho" 1) ;_打开命令提示
)
(slay);;;启用函数

点评

如果图层需要返回原来使用的图层,就在开头备份原图层,结尾加上恢复就行。  发表于 2023-6-27 17:09
回复 支持 1 反对 0

使用道具 举报

发表于 2023-6-27 17:01:18 | 显示全部楼层
  1. (defun c:csk (/ dxf10 i p0 p1 p2 pp s1 ss)
  2.   (defun dxf10 (e / s);10组码取点
  3.     (if        (setq s
  4.                (mapcar 'cdr
  5.                        (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget e))
  6.                )
  7.         )
  8.       (if (= 1 (length s))
  9.         (car s)
  10.         s
  11.       )
  12.     )
  13.   )
  14.   (setq i -1)
  15.   (if (setq ss (ssget ":S" (list '(0 . "LWPOLYLINE"))))
  16.     (while (and (setq s1 (ssname ss (setq i (1+ i)))))
  17.       (setq pp (dxf10 s1)
  18.             p1 (car pp)
  19.             p2 (caddr pp)
  20.       )
  21.       (setq p0 (mapcar '(lambda (x) (* 0.5 x)) (mapcar '+ p1 p2)))
  22.       (vla-AddCircle
  23.         (vla-get-modelSpace
  24.           (vla-get-ActiveDocument (vlax-get-acad-object))
  25.         )
  26.         (vlax-3D-point p0)
  27.         (* 0.02 (distance p1 p2))
  28.       )
  29.       (if (= (tblsearch "LAYER" "CSK") nil)
  30.         (entmake
  31.           (list
  32.             '(0 . "LAYER")
  33.             '(100 . "AcDbSymbolTableRecord")
  34.             '(100 . "AcDbLayerTableRecord")
  35.             '(70 . 0)
  36.             '(6 . "Continuous")
  37.             '(62 . 2)
  38.             (cons 2 "CSK")
  39.           )
  40.         )
  41.       )
  42.       (vla-put-layer (vlax-ename->vla-object (entlast)) "CSK")
  43.       (entmake (list '(0 . "LINE")
  44.                      (cons 8 "CSK")
  45.                      (cons 10 p0)
  46.                      (cons 11 p1)
  47.                )
  48.       )
  49.     )
  50.   )
  51.   (princ)
  52. )
 楼主| 发表于 2023-6-27 17:09:25 | 显示全部楼层




哥,这里多了条线

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-6-27 17:23:02 | 显示全部楼层
本帖最后由 zwq8629 于 2023-6-27 17:24 编辑
hhh454 发表于 2023-6-27 17:07
异形的中心不太好确定,楼主可以截图在哪些图形中,画圆,下面是创建图层的代码
;;;设置当前图层,没有就 ...

多谢大佬,搞定了
 楼主| 发表于 2023-6-27 17:26:45 | 显示全部楼层
hhh454 发表于 2023-6-27 17:07
异形的中心不太好确定,楼主可以截图在哪些图形中,画圆,下面是创建图层的代码
;;;设置当前图层,没有就 ...

还有一个问题,画的中心圆没有在新建的图层上
 楼主| 发表于 2023-6-27 18:17:22 | 显示全部楼层
另加了一行函数搞定了,再次感谢两位大师
发表于 2023-6-28 23:06:48 | 显示全部楼层
zwq8629 发表于 2023-6-27 18:17
另加了一行函数搞定了,再次感谢两位大师

把以下删掉就行了
      (entmake (list '(0 . "LINE")
                     (cons 8 "CSK")
                     (cons 10 p0)
                     (cons 11 p1)
               )
      )
发表于 2023-6-29 09:15:19 | 显示全部楼层
穿丝孔可以用这个来画方便
 楼主| 发表于 2023-7-5 14:07:07 | 显示全部楼层
andyding 发表于 2023-6-28 23:06
把以下删掉就行了
      (entmake (list '(0 . "LINE")
                     (cons 8 "CSK")

大师,还有个问题麻烦你,这个只能画四边形的,其他多边型画出的圆不在中心
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:01 , Processed in 0.177824 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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