用于将椭圆转换为的lisp
是否有用于将椭圆转换为多段线的Lisp。我厌倦了不能生成包含椭圆的区域,或者不能将它们添加到预先存在的多段线中。 我不确定LISP是否正确,但首先可以将其绘制为普林斯。。。。PELLIPSE System Variable
Type: IntegerSaved in: DrawingInitial value: 0
Controls the ellipse type created with ELLIPSE.
0
Creates a true ellipse object.
1
Creates a polyline representation of an ellipse
我希望我不必这样做,因为我将不得不重画我的画很大一部分。但如果这是唯一的办法。有任何命令可以将椭圆转换为柱脚吗? 也许这可以帮助你:
http://www.cadtutor.net/forum/showthread.php?t=1639 我的变体
(defun C:E2P (/ adoc el ssnab en item lays lay lock pell ptcen osm)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(setq lays (vla-get-layers adoc))
(vla-startundomark adoc)
(setq ssnab (ssget '((0 . "ELLIPSE")))) ;_Выбор Region'ов в рисунке
(setq pell (getvar "PELLIPSE"))
(setq osm (getvar "OSMODE"))
(setvar "PELLIPSE" 1)
(while (and ssnab
(> (sslength ssnab) 0)
)
(setq el (ssname ssnab 0))
(setq en (vlax-ename->vla-object el))
(setq lay (vla-item lays (vla-get-layer en)))
(if (= (vla-get-lock lay) :vlax-true)
(progn (vla-put-lock lay :vlax-false)
(setq lock (cons lay lock))
))
(setq item (vla-get-ObjectName en))
(cond
((= item "AcDbEllipse")
(setq ptcen (vlax-safearray->list
(vlax-variant-value (vla-get-center en))
)
)
(command "_ellipse""_C" ptcen
(mapcar '+
ptcen
(vlax-safearray->list
(vlax-variant-value (vla-get-MajorAxis en))
))
(mapcar '+
ptcen
(vlax-safearray->list
(vlax-variant-value (vla-get-MinorAxis en))
)))
(mapcar
'(lambda (x y)
(vlax-put-property (vlax-ename->vla-object (entlast)) x y)
)
'(Linetype LineWeight Color Layer)
(mapcar '(lambda (x)
(vlax-get-property en x)
)
'(Linetype LineWeight Color Layer)
)
)
(vla-Delete en)
)
(t nil)
)
(ssdel el ssnab)
)
(setvar "PELLIPSE" pell)
(setvar "OSMODE" osm)
(if lock
(foreach x lock (vla-put-lock x :vlax-true))
)
(vla-endundomark adoc)
(if (= (getvar "DWGCODEPAGE") "ANSI_1251")
(princ "\nПреобразование Ellipse завершено")
(princ "\nTransformation Ellipse is completed")
)
(princ)
)
(if (= (getvar "DWGCODEPAGE") "ANSI_1251")
(princ "\nНаберите в ком. строке E2P")
(princ "\nType E2P to run command"))
样条曲线、圆、直线、椭圆、二维和三维多段线在二维多段线(直线段)中的变换
ConvTo2d-二维多段线中线性对象的变换
ConvTo3d-三维多段线中线性对象的变换 当复制文本并保存在记事本中时,unicode、unicode big-endian或UTF-8的格式会有所不同吗?我之所以这样问,是因为我正在保存并成功加载它们,但在键入defun c:e2p值时,在最后一种情况下是e2p,autocad显示一个错误。 无俄语文本
(defun C:E2P (/ adoc el ssnab en item lays lay lock pell ptcen osm count)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(setq lays (vla-get-layers adoc) count 0)
(vla-startundomark adoc)
(princ "\nSelect Ellipse")
(setq ssnab (ssget '((0 . "ELLIPSE"))))
(setq pell (getvar "PELLIPSE"))
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setvar "PELLIPSE" 1)
(while (and ssnab (> (sslength ssnab) 0))
(setq el (ssname ssnab 0))
(setq en (vlax-ename->vla-object el))
(setq lay (vla-item lays (vla-get-layer en)))
(if (= (vla-get-lock lay) :vlax-true)
(progn (vla-put-lock lay :vlax-false)
(setq lock (cons lay lock))))
(setq item (vla-get-ObjectName en))
(cond
((= item "AcDbEllipse")(setq count (1+ count))
(setq ptcen (vlax-safearray->list(vlax-variant-value (vla-get-center en))))
(command "_.ellipse""_C" (trans ptcen 0 1)
(trans (mapcar '+ ptcen (vlax-safearray->list(vlax-variant-value (vla-get-MajorAxis en)))) 0 1)
(trans (mapcar '+ ptcen (vlax-safearray->list(vlax-variant-value (vla-get-MinorAxis en)))) 0 1))
(mapcar '(lambda (x y)(vlax-put-property (vlax-ename->vla-object (entlast)) x y))
'(Linetype LineWeight Color Layer)
(mapcar '(lambda (x)(vlax-get-property en x))
'(Linetype LineWeight Color Layer))
)
(vla-Delete en)
)
(t nil)
)
(ssdel el ssnab)
)
(setvar "PELLIPSE" pell)
(setvar "OSMODE" osm)
(if lock (foreach x lock (vla-put-lock x :vlax-true)))
(vla-endundomark adoc)
(princ (strcat "\nTransformation " (itoa count) " Ellipse is completed"))
(princ)
)
(princ "\nType E2P to run command")
PS.已更正 谢谢,成功了 我喜欢这个网站的搜索功能。一篇4.5年前的帖子让我大吃一惊。
页:
[1]