CADIDAC 发表于 2022-7-6 09:04:44

用于将椭圆转换为的lisp

是否有用于将椭圆转换为多段线的Lisp。我厌倦了不能生成包含椭圆的区域,或者不能将它们添加到预先存在的多段线中。

dbroada 发表于 2022-7-6 09:16:16

我不确定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

CADIDAC 发表于 2022-7-6 09:23:32

我希望我不必这样做,因为我将不得不重画我的画很大一部分。但如果这是唯一的办法。有任何命令可以将椭圆转换为柱脚吗?

fuccaro 发表于 2022-7-6 09:34:31

也许这可以帮助你:
http://www.cadtutor.net/forum/showthread.php?t=1639

VVA 发表于 2022-7-6 09:40:34

我的变体
 

(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-三维多段线中线性对象的变换

CADIDAC 发表于 2022-7-6 09:47:26

当复制文本并保存在记事本中时,unicode、unicode big-endian或UTF-8的格式会有所不同吗?我之所以这样问,是因为我正在保存并成功加载它们,但在键入defun c:e2p值时,在最后一种情况下是e2p,autocad显示一个错误。

VVA 发表于 2022-7-6 09:54:21

无俄语文本

(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.已更正

CADIDAC 发表于 2022-7-6 10:00:30

谢谢,成功了

tzframpton 发表于 2022-7-6 10:05:04

我喜欢这个网站的搜索功能。一篇4.5年前的帖子让我大吃一惊。
页: [1]
查看完整版本: 用于将椭圆转换为的lisp