帮助着色圆形区域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))
)) 请尝试以下操作:
(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和视图。 尝试此功能:
使用(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)
)
)
)
谢谢你们两个,我现在已经开始工作了!
太棒了-不客气,普莱考斯基! 在Lee的测试程序thread post#2中,我需要画一个半圆(实心图案填充)。但我不能让它工作。 你好
...
(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
我搞不懂。现在,我把这件事搁置了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 . "")))
请张贴一张显示预期结果的图纸。 我不知道该怎么做。这是一个尝试。这是一个受控电源插座符号。我需要一个两面都有阴影的,一个只有一面有阴影的。谢谢你的帮助,
页:
[1]