DrawJig模仿Move时能否不显示原对象
用lisp可以轻松实现。(defun C:TEST (/ DATA GRR GRRPT KEY LOOP OBJECTS PT SS)
;; by carrot1983 2020.09.29
(setq SS (ssget))
(setq PT (getpoint "\n指定点:"))
(setq OBJECTS (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
(setq LOOP t)
(while LOOP
(setq GRR (grread t 15 2))
(setq KEY (car GRR))
(setq DATA (cadr GRR))
(cond ((= KEY 5)
(setq GRRPT DATA)
(foreach O OBJECTS
(vla-move O (vlax-3d-point PT) (vlax-3d-point GRRPT))
)
) ;_移动
((or (= KEY 3) (= DATA 13))
(setq LOOP NIL)
) ;_3左击 13回车 表示确认
((member KEY '(12 25))
(redraw)
(setq LOOP NIL)
) ;_右键退出
)
(setq PT GRRPT) ;_新基点
)
(redraw)
)
如果用drawjig 怎么修改以下代码。实现不显示原对象?
public class MoveJig : DrawJig
{
protected Point3d basePt;
protected Entity[] entities;
public MoveJig(Entity[] entities, Point3d basePt)
{
this.entities = entities;
this.basePt = basePt;
}
public Matrix3d Displacement { get; private set; }
protected override SamplerStatus Sampler(JigPrompts prompts)
{
var options = new JigPromptPointOptions("\nSecond point: ");
options.UserInputControls = UserInputControls.Accept3dCoordinates;
options.BasePoint = basePt;
options.UseBasePoint = true;
options.Cursor = CursorType.RubberBand;
var result = prompts.AcquirePoint(options);
if (basePt.DistanceTo(result.Value)
https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif
cad 自己的移动命令都显示 估计很难 Lisp 轻松实现的功能,到.net的时候困难真不少。有没有高人出来指点一二。 这样行么 但是图元多的时候可能会慢
一楼的代码就是这样子的。 找到办法了 可以把原图像的透明度变成100%,这样就不显示了。
页:
[1]