vlisp开发小助手实现Lisp可识别对象的属性方法.可以即时属性查看修改,自动在CHM中对应查询,代码全自动生成,写入记事本,可以自定义变量,不会lisp的人也能点出代码来.
发布1.5 贺岁版
如果不方便用Lisp编辑器你就新开个CAD用
修正bug:
1 entsel赋变量会死掉
2 剪切板访问错误解除
增加功能:
1 两次属性值对比 如选择一个图元后 记录一下 退出小助手修改图元 再用小助手查看对比属性
2 属性修改会自动生成vla-put
3 可在EXCEL文件中自定义根对象 自定义帮助文件路径和帮助文件的查询代码(右键帮助页面属性 对应我给的例子修改即可) 保存后重新运行小助手(支持Lisp语句哦!)
4 自动复制和手动复制切换功能
5 合并获得对象按钮 同样支持变量和Excel.Application形式
6 增加color属性
7 新的树型布局 价格不变量更足
-------------------------
发布1.4版 分为简体 繁体 英文3个版本
程序具体功能介绍:
1 左侧列表生成visual lisp可识别的对象模型列表(支持变量 外部控件 图面选择)
2 右侧列表查看对象的属性和方法(属性可以进行即时修改)
3 单击任意列表自动生成代码(注意方法的代码需要测试否则直接加载可能会有错误 因为参数不足)
4 目录树双击查看子对象
5 属性 方法列表双击自动在CHM帮助中查询 可以自己选择中文帮助(或自己将中文帮助替换英文的)
6 两侧属性实现对应关系
7 任何生成的代码均可自动复制到内存剪切板中 到其他地方可以直接粘贴
8 使用命令Lisp (最初的2个版本为autolisp)
9 支持加载到命令行查看结果
10 方法的使用自己添加参数(支持变量)中间需要用英文标点,分割(就像VBA的使用)
11 自动写入记事本文件
12 支持给代码赋予变量 即时生效
小技巧:对象属性修改后双击左边列表可以刷新对象属性显示 查看属性是否修改成功!
小技巧:支持GetBoundingBox获得对象范围输入'pa,'pb
可以自动生成代码:(vlax-invoke-method (vlax-ename->vla-object (car (entsel))) 'GetBoundingBox 'pa 'pb )
小技巧:生成的代码返回值如果是对象变量 可以直接复制代码到查看变量 如果弹出帮助是英文的 可以把明经的帮助替换CAD原帮助
小技巧:属性修改和方法测试支持变量.如(setq n 50)可以对AddCircle使用(list n n),n
生成代码:(vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'ModelSpace) 'AddCircle (vlax-3d-point (list n n)) n )
---------------------------
注意:
如果反复提示"是否网页访问剪切板"或; 错误: OpenClipboard 失败
请设置IE浏览器的工具-选项-安全-自定义级别-脚本-允许剪切板进行编程访问(此问题从1.5版本已经修正)
--------------------
以后计划: 能直接生成VBA的代码 定制用户自己的配置 提供常用对象的列表 增加自定义变量赋值......(再做下去不知道会怎样 很期待啊 难道做个迷你的vlisp编辑器出来? o(∩_∩)o...)
Visual Lisp 开发小助手 v1.1 简明教程
说明
{O}:object 表示对象目录树列表
{P}:property 表示属性列表
{M}:methods 表示方法列表
{}ActiveDocument 表示在某个列表中单击 "ActiveDocument"
<PI>:property input 表示属性输入栏
<MI>:methods input 表示方法输入栏 使用英文标点,分隔参数!
<>:(0 0) 表示输入栏内输入内容 可能是字符串 整数 实数 点表
先新开一张图
1 建立一个图层
{O}ActiveDocument->{O}Layers->{M}add-><MI>"new"->测试
下面代码出现结果说明方法成功!
复制代码后退出程序可以看见建立了一个新的new层
生成的代码:(vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'Layers) 'Add "new" )
2 绘制一条线
{O}ActiveDocument->{O}ModelSpace->{M}AddLine-><MI>(0 0),(100 100)->测试
生成的代码:(vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'ModelSpace) 'AddLine (vlax-3d-point '(0 0)) (vlax-3d-point '(100 100)) )
3 修改刚才的线的图层为new
选择对象->图面选择刚才生成的线->{P}layer->{PI}"new"->修改
生成的代码:(vlax-put-property (vlax-ename->vla-object (car (entsel))) 'Layer "new")
4 获取画面上第一个图元(就是刚才的线)
{O}ActiveDocument->{O}ModelSpace->{M}item-><MI>0->测试
生成的代码:(vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'ModelSpace) 'Item 0 )
5 修改上面代码的对象的起点坐标
命令行输入:
(setq name (vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'ModelSpace) 'Item 0 ))
回车
打开小助手
当前根对象输入name->查看变量->{P}StartPoint-><PI>(0 200)->修改
生成的代码:(vlax-put-property name 'StartPoint (vlax-3d-point '(0 200)))
6 刚才的new层删除
{O}ActiveDocument->{O}Layers->{M}item-><MI>"new"->测试
生成代码:(vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'Layers) 'Item "new" )
命令行输入:
(setq lay (vlax-invoke-method (vlax-get (vlax-get (vlax-get-acad-object) 'ActiveDocument) 'Layers) 'Item "new" ))
打开小助手
当前根对象输入lay->查看变量->{M}Delete->测试
生成代码:(vlax-invoke-method lay 'Delete )
该层删除成功
上面说的都很简单 复杂一点例如求交点也可以 自己尝试一下吧:)
------------代码生成教程结束------------
怎么样?用鼠标点一点就能生成代码
对新人会有帮助吧?
如果你不知道属性和方法的含义
双击它就会打开帮助页面帮你查询!
明经通道的那本VBA帮助一定要放到搜索目录下面文件名必须acadauto.chm
如果反复提示"是否网页访问剪切板"
请设置IE浏览器的工具-选项-安全-自定义级别-脚本-允许剪切板进行编程访问