乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 112|回复: 9

请教问题

[复制链接]

93

主题

786

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1153
发表于 2004-6-3 17:27:00 | 显示全部楼层 |阅读模式
直接双击对象会自动调用相应的命令
想知道有没办法改变默认对应的系统命令
主要想达到两个目的
一是用自编命令代替系统命令
二是对同类型的对象
比如对“块”来说
根据不同的特征比如块名
选择不同的程序
要做到以上功能
是否一定要用到事件反应器如果第一条可以简便的做到
那么第二条就好解决了
如果大家有好的思路
欢迎不吝赐教
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-6-3 17:32:00 | 显示全部楼层
其实使用普通程序,再做到菜单里,一样方便,,,点一下菜单(还可以设置快捷键),再选择对象,比双击也差不了多少
回复

使用道具 举报

93

主题

786

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1153
发表于 2004-6-7 15:40:00 | 显示全部楼层
你说的这些我都可以实现
只是既然新版CAD有这样的功能
如果能实现更改默认设置的话
针对同类型对象做一个识别程序
根据不同条件调用不同的程序
这样在绘图过程中可以极大提高效率
而且不用记忆大量的自编命令
也不需要制作菜单文件
这样岂不更好
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2004-6-7 15:56:00 | 显示全部楼层

参考 http://discussion.autodesk.com/thread.jspa?messageID=2095286
Posted by: James Buzbee
Date: Feb/12/04 - 17:45 (GMT)



There have been some post recently on changing the way AutoCAD's double
clicking works. This is what I've done: the following is a simple lisp
that constructs a mouse reactor and allows the user to pick which command
fires over which object. I think I've got most objects, including most
ADT/AEC objects. Just edit the "command-list" variable for the command you
want to fire. Take note that attributes and inserts require a little
special handling. I hope this helps - it sure has increased my efficiency!
As always - check for word wrap!
;;;
;;; James Buzbee's Double Click Reactor
;;;
(vl-load-com)
;;; 2000i 2002 and 2004
;;; This is the main callback function where you'll define
;;; what command is fired over what object - see the command list
;;; If multiple objects are gripped and the command does not support
;;; multiple editing you will be prompted for an entity to edit.
;;;
(defun jb:beginDoubleClick (reactorObject Listofsomething / point obj owner
ownerobj command-list cmd gripset)
;;; added for error in 2004 - point returned from outside a
;;; paperspace viewport throws an error.
(if (vl-catch-all-error-p
(vl-catch-all-apply 'trans (list (car Listofsomething) 0 1)))
(princ "PaperSpace")
(progn
(setq cmd "_.PROPERTIES" ; command default
point Listofsomething
obj (car (nentselp (trans (car point) 0 1)))
owner (car (cadddr (nentselp (trans (car point) 0 1))))
gripset (cadr (ssgetfirst))
doc (vlax-get (vlax-get-acad-object) "activedocument"))
(if obj
(progn
; this statement will determine if the object
; clicked over is an insert or not
(cond (owner
(setq ownerobj (strcase (vlax-get (vlax-ename->vla-object owner)
"objectname"))))
(t (setq ownerobj (strcase (vlax-get (vlax-ename->vla-object obj)
"objectname"))))
)
;Now set up your commands for the appropriate object
; Object Command
;(cons "ACDBBLOCKREFERENCE" "_.REFEDIT ")
(setq command-list
(list (cons "ACDBBLOCKREFERENCE" "_.REFEDIT")
(cons "ACDBATTRIBUTE" "_.ATTEDIT")
(cons "ACDBMTEXT" "_.DDEDIT")
(cons "ACDBTEXT" "_.DDEDIT")
(cons "ACDBROTATEDDIMENSION" "_.DDEDIT")
(cons "ACDBALIGNEDDIMENSION" "_.DDEDIT")
(cons "ACDBORDINATEDIMENSION" "_.DDEDIT")
(cons "ACDBDIAMETRICDIMENSION" "_.DDEDIT")
(cons "ACDBRADIALDIMENSION" "_.DDEDIT")
(cons "ACDB2LINEANGULARDIMENSION" "_.DDEDIT")
(cons "ACDBMLINE" "_.MLEDIT")
(cons "ACDBATTRIBUTEDEFINITION" "_.DDEDIT")
(cons "ACDBHATCH" "_.HATCHEDIT")
(cons "ACDBRASTERIMAGE" "_.IMAGEADJUST")
(cons "AECDBWALL" "_.PROPERTIES")
(cons "AECDBDOOR" "_.PROPERTYDATAEDIT")
(cons "AECDBWINDOW" "_.PROPERTIES")
(cons "AECDBWINDOWASSEMBLY" "_.PROPERTIES")
(cons "AECDBCURTAINWALLLAYOUT" "_.PROPERTIES")
(cons "AECDBSPACE" "_.PROPERTYDATAEDIT")
(cons "AECDBSTAIR" "_.PROPERTIES")
(cons "AECDBRAILING" "_.PROPERTIES")
(cons "AECDBMVBLOCKREF" "_.PROPERTIES")
(cons "AECDBOPENING" "_.PROPERTIES")
(cons "AECDBCEILINGGRID" "_.PROPERTIES")
(cons "AECDBCOLUMNGRID" "_.PROPERTIES")
(cons "AECDBSLAB" "_.PROPERTIES")
(cons "AECSDBMEMBER" "_.PROPERTIES")
(cons "AECDBMASSELEM" "_.PROPERTIES")
(cons "AECDBROOF" "_.PROPERTIES")
(cons "AECDBROOFSLAB" "_.PROPERTIES")
(cons "AECDBCAMERA" "_.PROPERTIES")
(cons "AECDBSCHEDULETABLE" "_.PROPERTIES")))
;;; get the command
(foreach x command-list
(if (= (car x) ownerobj)
(setq cmd(cdr x))))
;;; make adjustment to command
(cond
((= cmd "_.REFEDIT")
(setq cmd "_.refedit (princ (cdr (nentselp (trans(car point)0 1)))) "))
((= cmd "_.ATTEDIT")
(setq cmd "_.attedit (princ obj) "))
((= cmd "_.EATTEDIT")
(setq
cmd "_.eattedit (princ obj) "))
(t (setq cmd(strcat cmd " ")))
)
(vla-sendcommand doc cmd)
)))))
;;;
(defun jboadDoublClickReactor (/)
(if (/= (type jbDoubleClickReactor) 'VLR-Mouse-Reactor)
(setq jbDoubleClickReactor
(VLR-Mouse-Reactor
nil
'((:VLR-beginDoubleClick . jb:beginDoubleClick))) ;_ end of
vlr-editor-reactor
))
(if (not (vlr-added-p jbDoubleClickReactor))
(vlr-add jbDoubleClickReactor))
;;; Unload acdblclkedit.arx in favor of jb's Expanded Double Click editing!
(if (member "acdblclkedit.arx" (arx))
(arxunload "acdblclkedit.arx" nil))
(princ))

(progn (jboadDoublClickReactor) (princ))
回复

使用道具 举报

93

主题

786

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1153
发表于 2004-6-8 10:00:00 | 显示全部楼层
谢谢了
可是联接我打不开
试过好多次了
能不能把文章直接贴出来?
        
另外再请教一个问题
原来R14在按纽菜单上连续点两次右键
可以直接进入按纽属性的修改界面
但是之后的版本就不再是这样
请问能够恢复成原先的设置吗?
回复

使用道具 举报

62

主题

938

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1186
发表于 2004-6-8 10:09:00 | 显示全部楼层
你的想法真的不错!但怎样实现双击响应呢?
回复

使用道具 举报

93

主题

786

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1153
发表于 2004-6-8 10:17:00 | 显示全部楼层
太感谢了
没想到这么快就有了回应
谢谢谢谢
回复

使用道具 举报

93

主题

786

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1153
发表于 2004-6-8 16:26:00 | 显示全部楼层

范例文件编译通过
运行时提示“no function definition: VLR-MOUSE-REACTOR”
现在外地出差只能看CAD帮助
帮助里关于VLR-MOUSE-REACTOR的说明比较简单
自己对VLISP也不是太熟
请大家帮忙分析一下问题出在哪
回复

使用道具 举报

93

主题

786

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1153
发表于 2004-6-8 16:29:00 | 显示全部楼层

回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-6-8 18:24:00 | 显示全部楼层
都加载了吗?注意前面还有一个(vl-load-com),不能漏的
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-18 03:56 , Processed in 0.343092 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表