plackowski 发表于 2022-7-5 20:18:36

帮助着色圆形区域w

我正在研制这种代码的灵丹妙药。com/node/186,但当我尝试运行以下命令时,圆形图案填充的半径会根据“ctr”变量与原点的距离而变化。我希望它完全取决于“ctr”和“edge”点。
 
(defun c:test()(setvar "osmode" 0)
(setq ctr (getpoint "\nCenter of Circle: "))
(setq edge (getpoint "\nEdge of Circle: "))
(entmakex (list
(cons 0 "HATCH")
(cons 100 "AcDbEntity")
(cons 8 "E-GRND")
(cons 100 "AcDbHatch")
(cons 10 ctr)
(cons 210 (list 0 0 1))
(cons 2 "SOLID")
(cons 70 1)
(cons 71 0)
(cons 91 1)
(cons 92 1)
(cons 93 1)
(cons 72 3)                        ;the "3" designates this is an elliptical shape, 1 for circle
(cons 10 ctr)                      ;center point of ellipse
(cons 11 edge)                     ;point of top quad
(cons 40 1)                        ;ratio of width to height
(cons 50 0.0)                      ;start angle
(cons 51 (* pi 2.0))               ;end angle (full ellipse)
(cons 73 1)                        ;counterclockwise flag
(cons 97 0)      
(cons 75 0)
(cons 76 1)
(cons 98 1)
(cons 10 (list 0 0 0))
))

Lee Mac 发表于 2022-7-5 20:25:29

请尝试以下操作:

(defun c:test ( / cen ocs rad )
   (if
       (and
         (setq cen (getpoint "\nCenter: "))
         (setq rad (getdist cen "\nRadius: "))
         (setq ocs (trans '(0.0 0.0 1.0) 1 0 t))
       )
       (entmake
         (list
            '(000 . "HATCH")
            '(100 . "AcDbEntity")
            '(100 . "AcDbHatch")
            '(010 0.0 0.0 0.0)
               (cons 210 ocs)
            '(002 . "SOLID")
            '(070 . 1)
            '(071 . 0)
            '(091 . 1)
            '(092 . 0)
            '(093 . 1)
            '(072 . 2)
               (cons 010 (trans cen 1 ocs))
               (cons 040 rad)
            '(050 . 0.0)
               (cons 051 (+ pi pi))
            '(073 . 1)
            '(097 . 0)
            '(075 . 0)
            '(076 . 1)
            '(098 . 1)
               (cons 010 (trans cen 1 ocs))
         )
       )
   )
   (princ)
)

上述内容也应适用于所有UCS和视图。

ymg3 发表于 2022-7-5 20:32:38

尝试此功能:
 
使用(pwipeout ctr rad 30)获取循环调用
 

;; Polygonal Wipeout-Lee Mac                                              ;
;; Creates an n-sided Polygonal Wipeout with the given center (UCS) & radius;
;;                                                                            ;
;; Modified by ymg                                                            ;

(defun pwipeout ( cen rad n / ang inc lst )
   (setq inc (/ pi n 0.5)
         ang (* (/ pi 2) -1)
   )
   (repeat n
       (setq lst (cons (list 14 (* 0.5 (cos ang)) (* 0.5 (sin ang))) lst)
             ang (+ ang inc)
       )
   )
   (entmakex
       (append
         (list
               (cons 0 "WIPEOUT")
               (cons 100 "AcDbEntity")
               (cons 100 "AcDbWipeout")
               (cons 10 (trans (mapcar '- cen (list rad rad)) 1 0))
               (cons 11 (trans (list (+ rad rad) 0.0) 1 0 t))
               (cons 12 (trans (list 0.0 (+ rad rad)) 1 0 t))
               (cons 280 1)
               (cons 71 2)
      (cons 91 (1+ (length lst)))
         )
         (cons (last lst) lst)
       )
   )
)

plackowski 发表于 2022-7-5 20:41:23

谢谢你们两个,我现在已经开始工作了!

Lee Mac 发表于 2022-7-5 20:46:13

 
太棒了-不客气,普莱考斯基!

Quest for Peace 发表于 2022-7-5 20:56:02

在Lee的测试程序thread post#2中,我需要画一个半圆(实心图案填充)。但我不能让它工作。

hanhphuc 发表于 2022-7-5 21:02:57

你好

...
(cons 051 (+ pipi ))
...

替换为

...
(cons 051 pi )
...


这一切都归功于李
 
这是另一个实心半圆

(defun c:test (/ p r v)
(setq v (getvar "osmode"))
(if (and (setq p (getpoint "\nPick center: "))
   (setq r (getdist p "\nRadius: ")))
   (command "_pline" p "w" r r "arc" (mapcar '+ p (list 0. r 0.)))
   ) ;_ end of if
(if (= (getvar "cmdactive") 1)
   (command)
   ) ;_ end of if
(setvar "osmode" v)
(princ)
) ;_ end of defun

Quest for Peace 发表于 2022-7-5 21:07:15

我搞不懂。现在,我把这件事搁置了3个月,偶尔还会再提。半圆需要一条不穿过中心点的平坦垂直边。
 
这就是我所做的,从一个类似的舱口开始。这没有任何意义。最低定义是什么?我还需要它的镜像,这是显而易见的吗?
 

(entmake
   '((0 . "hatch")(100 . "AcDbEntity")(8 . "0")(62 . 0)(6 . "ByBlock")
(100 . "AcDbHatch")(10 0.0 0.0 0.0)(210 0.0 0.0 1.0)(2 . "SOLID")
(70 . 1)(71 . 0)(91 . 1)(92 . 1)(93 . 4)
(72 . 1)(10 3.8301 15.3204 0.0)(11 3.8301 4.55836 0.0)
(72 . 2)(10 1.91505 9.97494 0.0)(40 . 5.74515)(50 . 5.05223)(51 . 1.23096)
(73 . 1)(97 . 0)(75 . 0)(76 . 1)(98 . 1)(10 0.0 0.0 0.0)(450 . 0)(451 . 0)
(460 . 0.0)(461 . 0.0)(452 . 0)(462 . 0.0)(453 . 0)(470 . "")))

Lee Mac 发表于 2022-7-5 21:16:54

请张贴一张显示预期结果的图纸。

Quest for Peace 发表于 2022-7-5 21:20:14

我不知道该怎么做。这是一个尝试。这是一个受控电源插座符号。我需要一个两面都有阴影的,一个只有一面有阴影的。谢谢你的帮助,
页: [1]
查看完整版本: 帮助着色圆形区域w