Lee Mac 发表于 2022-7-6 14:34:05

LISP或VL中的跳汰/重影

我绝对喜欢这些东西——它们看起来非常令人印象深刻,能够用它们创建自定义对象真是太棒了。
 
[看看这个天才的展示]
 
但是,我的问题是:在LISP或者更确切地说是视觉LISP中是否可能?或者这些技术仅限于ObjectARX和/或之类的技术。网络?
 
我已经看到/创建了一些类似这种技术的“make-shift”示例,使用了grvecs、grread、grdraw等函数,但我不确定这些与实际交易相比有多好。。。
 
我已经看到了执行此功能的“acet ss drag move”和“acet ss drag rotate”功能,但是还有其他不依赖Express Tools的方法吗?还是我运气不好?
 
感谢您的关注和时间,但最重要的是:耐心。
 
干杯
 

Freerefill 发表于 2022-7-6 14:44:33

我刚在谷歌上搜索了“跳汰”这个词,但发现了很多钓鱼网站。。这些术语到底意味着什么?

Lee Mac 发表于 2022-7-6 14:51:04

 
如果你查看SeanT发布的线程链接,就会发现该线程中有大量关于跳汰和重影的信息。

SEANT 发表于 2022-7-6 14:56:34

 
谢谢李;尽管我应该指出,抛物线本身并不是一个真正的自定义对象。该例程提供了一个自定义用户界面,允许创建半标准*样条曲线。目前,只有C++(ObjectARX)可以创建真正的“自定义对象”。
 
据推测,“被否决的对象”是AutoCAD 2010中的一个新功能,它允许。NET创建标准对象的附加特征和特性的能力。可能需要增加85%的功能,而真正的“自定义对象”的编程开销只有一半。
 
*我之所以说半标准是因为AutoCAD不允许直接创建二次样条曲线。它可以间接创建,如本文从第26页开始讨论的那样。
http://www.cadtutor.net/forum/showthread.php?t=17548
 
 
观察:
很明显,自从开始学习C语言以来,我在帖子中使用了过多的标点符号。

ronjonp 发表于 2022-7-6 14:58:26

李,
 
这看起来像是grvecs。。。。看看这个例程来跟踪一个对象
 
http://www.theswamp.org/index.php?topic=24536.msg297267#msg297267

Lee Mac 发表于 2022-7-6 15:07:42

 
感谢您的澄清,看起来您正在创建自定义对象(并且您设法愚弄了我!),但我明白你在说什么巧合的是,我只是看了一下屏幕,看到了一个由“Daniel”在ARX中创建的自定义对象(可能是吧?),但我不知道他是怎么做到的。。。
 
(是的,确实有很多标点符号……)
 
 
这些都是很酷的罗恩,grvecs的功能是有趣的玩周围我必须承认。。。

Lee Mac 发表于 2022-7-6 15:15:40

我想这是一个重影的例子:
 

;; Ghosting Example, by Lee McDonnell
;; Args:
;; msg ~ prompt      
;; oBj ~ object      
;; hi~ rubber band

(defun lmac-obj-drag-move(msg oBj hi / oBj bsPt cOBj gr)
(vl-load-com)
(if msg
   (prompt
   (strcat
       (if (not (vl-string-search "\n" msg))
         "\n""") msg)))
(or (eq 'VLA-OBJECT (type oBj))
   (setq oBj
       (vlax-ename->vla-object oBj)))
(if
   (vlax-property-available-p oBj 'InsertionPoint)
   (progn
   (if hi
       (setq bsPt
         (vlax-safearray->list
         (vlax-variant-value
             (vla-get-InsertionPoint oBj)))))
   (vla-highlight
       (setq cOBj
         (vla-copy oBj)) :vlax-true)
   (while
   (not
       (eq 3
         (car
         (setq gr (grread 't)))))
             (redraw)
   (if
       (and
         (eq 5 (car gr))
         (listp (cadr gr)))
       (progn
         (vla-move oBj
         (vla-get-InsertionPoint oBj)
             (vlax-3D-point
               (cadr gr)))
         (if hi
         (grdraw bsPt (cadr gr) 256 1)))))
   (vl-catch-all-apply
       'vla-delete
         (list cOBj)))
   nil)
(redraw))

;; Test Function

(defun c:test(/ ss pt)
(if (setq blk (car (entsel "\nSelect Object: ")))
   (lmac-obj-drag-move nil blk t)))

SEANT 发表于 2022-7-6 15:16:51

我有机会尝试一下。从参考的2d几何到透视图中的3d几何,完美地工作。

Lee Mac 发表于 2022-7-6 15:26:22

 
谢谢我扩展了在沼泽发布的方法,以便更好地模拟ACAD中的“移动”命令。
 
目前,它只适用于具有InsertionPoint属性的对象,但我正在寻找将其扩展到所有对象的方法,可能还有选择集。
 

Lee Mac 发表于 2022-7-6 15:28:07

好的,这应该适用于选择集。我意识到,“acet-ss-drag-move”功能已经做到了这一点,但它只适用于安装Express Tools的地方。这应该在所有情况下都有效。
 
[现在包括相对基点…]
页: [1] 2
查看完整版本: LISP或VL中的跳汰/重影