明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3448|回复: 11

[求助][讨论]首次使用OPENDCL开发笔记

  [复制链接]
发表于 2009-6-12 02:00 | 显示全部楼层 |阅读模式

本来应该发在OPENDCL子论坛里的
不过那里人气实在低所以发在这里吧

前几天nonsmall的一个帖子里
第一次注意到opendcl工具插件
这个真是开发vlisp程序的利器
下面是我首次用它做程序
程序远远没有完工
贴出来的目的有几个
1.关于程序功能设置的思路请大家提提意见
2.关于程序功能如何实现,有些地方还不太懂,需要大家帮助
3.推广opendcl这个工具

这个程序的名字暂定"my图形tree",简称"mytree"
首要功能是用于图档的快速切换及管理
类似于docbar但在界面和功能上将会有很大的不同
docbar 2.0已经做的很好了
但和我所希望的仍有差距
本来想学习arx自己做
现在有了opendcl根据它的特点
某些想法将放弃
但同时也多了些新的思路
自我感觉目前的构想若都能实现
这个程序还是有一定价值的

程序源码,对话框文件以及对它开发的构想
都将在沙发帖中更新并标以时间区分
而关于程序开发上的疑问将在板凳帖里提出
欢迎大家指教

评分

参与人数 1威望 +2 明经币 +5 金钱 +20 贡献 +5 激情 +5 收起 理由
mccad + 2 + 5 + 20 + 5 + 5 【精华】好文章

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2009-6-12 02:04 | 显示全部楼层

开发思路简介

本来想用标签控件(tab)来实现文档切换
但是标签控件无法使用右键
而且似乎不能增减选项卡
所以最终决定采用tree控件
采用tree后程序界面由横变竖
占位相对要多一点
但本身我就打算采用简写的方式显示文件名
所以这个问题应该影响不大

"mytree"中
parent是文件所属文件夹名
child是打开文件名
这样处理的优点是比较直观
且不同文件夹的文件可以分开排序

目前开发进度<2009年6月11日>
1.实现已打开图形的分目录显示
2.点击文件名(child)可以切换到相应文档


预备加入功能

1.建立名称简写规则并在对话框中实现简写
简写规则分2种
a.默认规则
默认规则用于通常情况下的简写规则
主要可能用于确定parent的缩略方式
比如指定只显示最后1级或2级文件夹名
具体有待考虑
b.定制规则
以ini文件型式放在文件夹内
该文件存在时以文件内的规则优先
{此功能实现后,版本将确定为V1.0}

2.简写规则建立器
专门用于生成前述的ini文件

3.将目前单一tree改为3个tree并用分割线隔开
设3个tree纯属个人需要
我画图时一般会打开3类文件
当前项目,过往类似项目--用于参考,标准图库--调用

4.记录已打开文件或文件夹
形成工程文件以方便今后快速打开文件

5.对不同类文件可单独进行设置
如参考类图库类不予保存
当前工程类直接保存或建立同步更新文件
同步更新设置将是这个环节的重点
{此功能实现后,版本将确定为V2.0}

6.定义双击,右键功能
例如:
parent双击调用资源管理器右键调用模拟弹出式菜单或类别设置对话框
child双击保存右键调用模拟弹出式菜单或设置对话框

<2009年6月11日>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2009-6-12 02:06 | 显示全部楼层

目前待解决问题
<优先级低>01.无名文件的名称显示方式
<优先级低>02.只读文件的确定及后续处理
<优先级高>03.当前文档对应child的焦点设置
<优先级高>04.文档手工切换时,焦点的相应变化
<优先级高>05.文件另存为或无名文件保存后的child刷新
<优先级高>06.打开关闭文件后的label刷新
<优先级低>07.label修改对应程序流程(暂屏蔽实时修改,待简写规则模块开发时解决)
<优先级中>08.实时建立并启用简写规则后的label刷新
<优先级低>09.对话框布局(按钮布置及定义,部分放在V2中解决)
<优先级低>10.__________

目前正在试图解决的问题
1.文档切换反应器
2.打开关闭反应器
下一步准备解决的问题
1.对图形文件是否处于只读状态的判断
2.图形修改反应器

 楼主| 发表于 2009-6-12 02:24 | 显示全部楼层

目前遇到困难

1.
已打开多个文件的情况下加载mytree
或者mytree加载后文件打开关闭改名等
如何使得每个文件都自动更新tree
目前对于新打开文件
我的方法是在ACAD.mnl的末尾加了一句
(load "mydoc.lsp")(c:1)
每开个文件都执行一次mytree
并在mytree程序的末尾
采用vl-propagate函数在所有文档中刷新数据
这应该不是最佳的解决办法
因为效率太低

关闭改名等
当然是采用反应器
目前还没到这一步

2.关于文档切换的焦点转换
我的办法是建立vlr-docmanager-reactor反应器
但是加载了这个反应器
就会不停弹出出错提示
全部点确定后再就可以实现焦点转换
就是不知道问题出在何处

3.
另外问个问题
有Vlisp函数帮助大全吗?
最好是中文版的
我手上的帮助文件
有vla-get类,有vla-put类
就是少了vla类的

 楼主| 发表于 2009-6-12 02:33 | 显示全部楼层
本帖最后由 作者 于 2009-6-12 2:54:23 编辑

程序里采用了doslib函数库里的函数
压缩包里是doslib15.arx,doslib16.arx两个文件
我的CAD是2004

(defun s::load_doslib61()
 ;;----------load doslib6.1
 (cond
  ( (= "15" (substr (getvar "acadver") 1 2))   ; Check for AutoCAD 2000, 2000i, or 2002
   (if (not (member "doslib15.arx" (arx)))
    (if (findfile "doslib15.arx") (arxload "doslib15") )
   )
  )
  ( (= "16" (substr (getvar "acadver") 1 2))   ; Check for AutoCAD 2004, or 2005
   (if (not (member "doslib16.arx" (arx)))
    (if (findfile "doslib16.arx") (arxload "doslib16") )
   )
  )
 )
 ;;----------ok
(princ)
)

(s::load_doslib61)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2009-6-12 02:58 | 显示全部楼层
文档切换反应器
个人感觉反应器是应该在文件打开后激活
但是在一次打开多个文件时
不知道如何在最后一个文件打开时再激活反应器
发表于 2009-6-12 08:42 | 显示全部楼层
潜力帖,支持你.
发表于 2009-6-12 08:59 | 显示全部楼层

楼主挺用心的

应该支持!

发表于 2009-8-22 16:58 | 显示全部楼层

强烈支持LZ,我现在在学Open DCL,工具感觉比CAD自带DCL工具好用多了,只是现在苦于没有好的中文版教程,只能摸索着学习。

“本来应该发在OPENDCL子论坛里的,不过那里人气实在低所以发在这里吧。”

发表于 2011-2-27 15:41 | 显示全部楼层
踏破铁鞋无觅处,得来全不费功夫。

多谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 12:18 , Processed in 0.255670 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表