如何延长弧?
我试图拉伸或拉长一个8-1/8英寸的弧,但当acad说要在“拉长”中选择一个对象时,我做不到,当我单击该对象时,什么都没有发生。我也试过拉伸,但它只会让我拉一个角,我需要围绕圆的中心点拉长一切
看看这个口齿不清能不能用。。。
由LeeMac创建!
;; Quick Arc Editor, by Lee McDonnell20.07.2009
(defun c:acEd (/ *error* foo prop str ent Obj
eLst gr dat val osPt)
(vl-load-com)
(defun *error* (err)
(if (and Obj eLst (not (vlax-erased-p Obj)))
(mapcar
(function
(lambda (x)
(vlax-put-property Obj (car x) (cdr x)))) eLst))
(if (not
(wcmatch
(strcase err) "*BREAK,*CANCEL*,*EXIT*"))
(princ (strcat "\n** Error: " err " **"))
(princ "\n*Cancel*"))
(redraw) (princ))
(setq foo 'distance prop 'Radius str "")
(while
(progn
(setq ent (entsel "\nSelect Arc/Circle: "))
(cond ((vl-consp ent)
(if (vl-position
(vla-get-ObjectName
(setq Obj
(vlax-ename->vla-object (car ent))))
'("AcDbArc" "AcDbCircle")) nil
(princ "\n** Invalid Object Selection **")))
(t (princ "\n** Nothing Selected **")))))
(foreach x '(StartAngle EndAngle Radius)
(and (vlax-property-available-p Obj x)
(setq eLst
(cons
(cons x (vlax-get-property Obj x)) eLst))))
(while
(progn
(setq gr (grread 't 15 0) dat (cadr gr)) (redraw)
(cond ((and (eq 5 (car gr)) (listp (setq cPt (cadr gr))))
(if (and (< 0 (getvar "OSMODE") 16383)
(setq osPt (osnap dat (osLst (getvar "OSMODE")))))
(osMark osPt))
(vlax-put-property Obj prop
((eval foo) (vlax-get Obj 'Center) cPt))
(grdraw (vlax-get Obj 'Center) cPt 30 (~ -2)) t)
((eq 25 (car gr)) nil)
((eq 3 (car gr))
(if (and (< 0 (getvar "OSMODE") 16383)
(setq osPt (osnap dat (osLst (getvar "OSMODE")))))
(vlax-put-property Obj prop
((eval foo) (vlax-get Obj 'Center) osPt))))
((eq 2 (car gr))
(cond ((or (< 47 dat 58) (eq dat 46))
(princ (chr dat))
(setq str (strcat str (chr dat))))
((and (= dat(> (strlen str) 0))
(princ (strcat (chr" " (chr ))
(setq str (substr str 1 (1- (strlen str)))))
((eq 6 dat)
(cond ((< 0 (getvar "OSMODE") 16384)
(setvar "OSMODE" (+ 16384 (getvar "OSMODE"))))
(t (setvar "OSMODE" (- (getvar "OSMODE") 16384)))))
((eq 9 dat)
(and (eq "AcDbArc" (vla-get-ObjectName Obj))
(setq foo(cond ((eq foo 'angle) 'distance) (t 'angle))))
(setq prop (cond ((vl-position prop '(EndAngle StartAngle))
(setq prop 'Radius))
(t (setq prop (propt Obj cPt))))))
((vl-position dat '(13 32))
(cond ((or (and (eq foo 'angle) (setq val (angtof str 0)))
(and (eq foo 'distance) (setq val (distof str))))
(vlax-put-property Obj prop val)))) '(t)))
(t)))) (redraw)
(princ))
(defun propt (Obj pt)
(if (eq "AcDbArc" (vla-get-ObjectName Obj))
(cond ((> (distance pt (vlax-get Obj 'StartPoint))
(distance pt (vlax-get Obj 'EndPoint))) 'EndAngle)
(t 'StartAngle)) 'Radius))
(defun oSlst (os / str cnt)
(setq str "" cnt 0)
(if (< 0 os 16383)
(foreach mod '("_end" "_mid" "_cen" "_nod" "_qua"
"_int" "_ins" "_per" "_tan" "_nea"
"_non" "_app" "_ext" "_par")
(if (not (zerop (logand (expt 2 cnt) os)))
(setq str (strcat str mod (chr 44))))
(setq cnt (1+ cnt))))
(vl-string-right-trim (chr 44) str))
(defun osMark (pt / drft osSz osCol ratio bold glst i)
(setq drft (vla-get-drafting
(vla-get-preferences
(vlax-get-acad-object)))
osSz (vla-get-AutoSnapMarkerSize drft)
oscol (vla-get-AutoSnapMarkerColor drft)
ratio (/ (getvar "VIEWSIZE")
(cadr (getvar "SCREENSIZE")))
bold (mapcar
(function
(lambda (x)
(* x ratio))) (list (+ osSz 0.5) osSz (- osSz 0.5))) i 0)
(repeat 50
(setq glst
(cons
(polar '(0 0 0) (* i (/ pi 25.)) 1.) glst) i (1+ i)))
(foreach x bold
(grvecs (append (list oscol) glst (cdr glst) (list (car glst)))
(list (listx0.0 0.0 (car pt))
(list 0.0x0.0 (cadr pt))
(list 0.0 0.0 1.0 0.0)
(list 0.0 0.0 0.0 1.0)))))
(princ (strcat (chr" " (chr ))
(setq str (substr str 1 (1- (strlen str)))))
((eq 9 dat)
(and (eq "AcDbArc" (vla-get-ObjectName Obj))
(setq foo(cond ((eq foo 'angle) 'distance) (t 'angle))))
(setq prop (cond ((vl-position prop '(EndAngle StartAngle))
(setq prop 'Radius))
(t (setq prop (propt Obj cPt))))))
((vl-position dat '(13 32))
(cond ((or (and (eq foo 'angle) (setq val (angtof str 0)))
(and (eq foo 'distance) (setq val (distof str))))
(vlax-put-property Obj prop val)))) '(t)))
(t)))) (redraw)
(princ))
(defun propt (Obj pt)
(if (eq "AcDbArc" (vla-get-ObjectName Obj))
(cond ((> (distance pt (vlax-get Obj 'StartPoint))
(distance pt (vlax-get Obj 'EndPoint))) 'EndAngle)
(t 'StartAngle)) 'Radius)) 当你“列出”它时,它真的是一个弧吗?如果是这样,lengthen将对此进行处理。 它说它是一个圆弧,不知道为什么当我在“加长”命令中时不能选择该直线。
我以前从未使用过LISP命令,你把代码放在哪里? 它在锁定层上吗? 1、将密码复制到记事本中。
2.另存为ArcEdit。lsp(确保格式不是文本文档;*.txt,另存为类型-所有文件)
3.进入AutoCAD并在命令行中输入“APPLOAD”。
4.选择LISP的位置,然后单击“加载”。
5.执行加载的LISP。在这种情况下,该命令将被ACED。
享受命令。。。
点击TAB键使弧变长或变短。 这是我上传到上一个线程的图纸,后来我在意识到我忘记修剪间隙线后编辑了它。我更正了它并上传了新的。在新的图形中,线段被制作成闭合多段线,以便于选择极轴阵列。如果您正在处理的图形是我稍后上传的正确图形,要延长弧,必须先分解它。否则,请将您的绘图上传到此处,我或其他人将找到解决方案。 lengthen命令,内置于autocad中 谢谢你,球童,成功了。
页:
[1]
2