插入块时开始行
问候语:在Acad的早期,可以重命名某些未使用的F键。在那些年里,我给F键分配了一个短lisp命令。
例如,在命令行输入行时,可以点击相应的F键(其中包含短lisp的命令),如果在块或其各自属性上的任何位置拾取,则该行将从块插入点开始。现在,我想知道如何重命名一个无用的F键,或者将我的小lisp合并到另一个lisp中,使其从拾取的块或其各自属性的插入点开始。
干杯
S 您可以这样透明地调用LISP:
(defun c:AtInsertion ( / obj )
(if
(setq obj
(SelectifFoo
(lambda ( x / o )
(setq o
(vlax-ename->vla-object
(cond
(
(= (length x) 4) (car (last x))
)
(
(car x)
)
)
)
)
(if (vlax-property-available-p o 'InsertionPoint)
o
)
)
"\nSelect Object: "
)
)
(vlax-get obj 'InsertionPoint)
)
)
(defun SelectifFoo ( foo str / sel x )
(while
(progn
(setq sel (nentsel str))
(cond
(
(vl-consp sel)
(if (not (setq x (foo sel)))
(princ "\n** Invalid Object Selected **")
)
)
)
)
)
x
)
_non 'AtInsertion
李,这就是这里发生的事情:
如果拾取了块,则线从块插入点开始。如果拾取了块的属性,则线从拾取点开始。
以下是我使用的lisp:
;get insertion point of BLOCK by picking any attribute !
;
(DEFUN VV (/ PT1 PT2 PT5 PT6)
(SETQ PT1 (ENTSEL "\nPick on BLOCK or ATTRIBUTE: "))
(SETQ ENT(ENTGET (CAR PT1)))
(SETQ PT5 (CDR (ASSOC 10 ENT)))
)
如果加载此lisp,并在输入line命令后,输入(VV)并拾取相应的属性,则线条将从块插入点开始。这是查找块插入点的非常方便的方法,其中有许多点块与点#、desc和高程等属性聚集在一起。
希望这对你更有帮助。
干杯
S 根据您给出的描述,我的印象是,如果选择了属性,您希望使用属性插入。。。
李:你的解释是对的。我的错。最后一句应该是。。。无论是否拾取块或其属性,直线都从块的插入点开始。
对不起大家!
S 不用担心-您已经有了代码,但这可能更好:
(defun c:AtInsertion ( / obj )
(if
(setq obj
(SelectifFoo
(lambda ( x )
(if
(vlax-property-available-p
(setq x (vlax-ename->vla-object x)) 'InsertionPoint
)
x
)
)
"\nSelect Object: "
)
)
(trans (vlax-get obj 'InsertionPoint) (vlax-get obj 'Normal) 1)
)
)
(defun SelectifFoo ( foo str / sel x )
(while
(progn
(setq sel (entsel str))
(cond
(
(vl-consp sel)
(if (not (setq x (foo (car sel))))
(princ "\n** Invalid Object Selected **")
)
)
)
)
)
x
)
不要忘记将您的点转换为UCS。李代码很好。
还有别的玩法。。。
(defun c:AI (/ ss)
(if (setq ss (ssget "_+.:E:S" '((0 . "INSERT"))))
((lambda (ins)
(if (eq 1 (logand 1 (getvar 'cmdactive)))
ins
(command "_.line" "_non" ins)
)
)
(trans (cdr (assoc 10 (entget (ssname ss 0)))) 0 1)
)
)
) 哦,是的,您可以在CUI编辑器中编辑F键(称为加速键),但最简单的方法是创建MNU文件并从那里加载它们。此外,如果使用与MNU同名的MNL启动文件,它将在每次启动时自动加载。
这是我的艾伦·汤普森的剪辑。mnu文件:
***MENUGROUP=AlanThompson
***TOOLBARS
***ACCELERATORS
["F1"]^C^CEXCHPROP
["F4"]^C^CIMPORTLAYERS
["F5"]^C^CPEDIT _M
["F6"]^C^CM2P
["F7"]^C^C'MATH
'_zoom _p
我通过一个名为AlanThompson的文件加载我所有的lisp例程和设置。mnl公司
当我买了一台新电脑,我所要做的就是输入MenuLoad,加载我的AlanThompson。mnu文件,我可以走了。
仅供参考,请务必更改MENUGROUP名称(红色)。
谢谢艾伦和李,我要开始思考。。。。什么是最好的。。
我曾想过以某种方式使用USERS5中保存的东西,然后在LINE命令后以某种方式调用它,以在触摸块或块属性时找到块插入点。但是
干杯
S 享受
请记住,如果使用Lee的,则需要将点转换为UCS,因为如果您不是WCS,则会产生不希望的结果。
页:
[1]
2