乐筑天下

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

[编程交流] Objectdcl示例

[复制链接]

55

主题

243

帖子

188

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 12:04:48 | 显示全部楼层 |阅读模式
大家好,有没有objectdcl的简单示例?
我尝试了objectdcl网站上提供的以下链接,但我得到了旧的链接
“404未找到”消息。
 
http://www.objectdcl.com/knowledgebase/knowledgebase.html
 
谢谢
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 12:14:33 | 显示全部楼层
你到底在找什么?
如果您下载了opendcl studio,其中包括一些示例。
我从一开始就在使用openDCL,我很喜欢它。
我很乐意帮忙
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 12:28:19 | 显示全部楼层
我不确定objectdcl和opendcl之间有什么区别?
我查看了opendcl站点,但仍然找不到任何简单的示例。
你能给我举个简单的例子吗?
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 12:38:57 | 显示全部楼层
以下是这两个项目的一点背景。
ObjectDCL几年前从加拿大的一个家伙开始,它的价格约为300.00美元+/-(我买了它,但忘记了它的确切价格)。几年前,他生病了,无法继续开发该项目。他将该程序发布为一个开源项目,以便其他程序员可以进一步开发该程序。开源程序对公众来说是免费的,他们可以随心所欲。一家名为DuctiSoft的公司开发了该代码,现在以一定的价格出售,他们还获得了该软件的原始名称。另一组开发人员接受了代码并继续开发,将其命名为OpenDCL,并将代码或打包的程序免费分发给公众。我更喜欢免费的,但有一些问题,如果必要的话,我可以在后面详细讨论。
 
我建议下载当前稳定的OpenDCL版本。
这是下载的链接
http://sourceforge.net/projects/opendcl/files/Development/OpenDCL.Studio.ENU.6.0.0.15.msi/download
如果没有下载,您可能需要单击直接链接或镜像链接。
将下载保存到文件夹中,然后运行它以安装OpenDCL studio。
这将在您的计算机上安装主环境和运行时文件。
安装后,导航到C:\Program Files\OpenDCL Studio\chs\Samples
在那里你会发现一个自述文件和很多例子。
 
OpenDCL(和objectDCL)要求运行您创建的任何程序的计算机安装运行时ARX文件。因此,如果您创建了一个要分发的程序,您必须确保将运行时文件和语言文件夹打包在一起。
当您安装opendcl studio时,运行时文件安装在您的计算机上,位于c:\program files\common files\opendcl。此外,还安装了不同的语言文件。
 
包括的例子和我能给你展示的一样好。
试一试,如果你想继续,我很乐意帮助你组织起来,让你走上正确的道路。
起初这一切看起来都很可怕,但当你熟悉了这个过程后,你会喜欢它的。
 
下面简要介绍一下它的基本工作原理。
 
在工作室制作一个表单,然后在其上放置两个按钮。
所有对象、窗体和按钮或其他工具都具有属性和事件
属性示例类似于按钮上显示的文本,事件示例类似于单击按钮。如果用户单击按钮,您希望执行什么代码
 
因此,在lisp代码中,首先要确保运行时。ARX文件已加载,然后确保项目已加载,然后调用事件以用2个按钮显示表单。
假设一个按钮将执行此lisp命令(警报“Hello World”),因此当用户单击该按钮时,AutoCAD消息框将出现。另一个按钮将用于关闭表单,以便用户可以退出程序。
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 12:41:21 | 显示全部楼层
感谢John的详细解释,以及如何使用它的基本知识。大约5-6年前,我玩过它(当时Chad负责),但由于缺乏文档或示例,我放弃了。同时,普通的老dcl或多或少做了我想要的。所以现在我想我可能会再次访问这个软件。不幸的是,由于管理员权限,目前我无法运行它。我会让IT部门让它工作。
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 12:50:01 | 显示全部楼层
下载了opendcl并尝试了教程。我承认这看起来有点难理解。制作一个对话框看起来不太难,但我不知道如何将对话框与代码联系起来?
我想知道你或其他人是否可以转换下面的简单代码,使其与opendcl一起运行?
我想如果有人能让我开始,我希望能解决剩下的问题。
 
  1. (defun C:AreaSq (/ areaunits  ss      n         attlst
  2.            lstpnt     inspnt      areametres areametresmm
  3.            oldcmd     olddzi      oldlay     oldosm
  4.            outent     rtosnum)
  5. (AreaSqdcl)
  6. (setq    OldDzi (getvar "DIMZIN");save all used sysvars
  7.    OldCmd (getvar "CMDDIA")
  8. );setq
  9.    
  10. (setvar "CMDECHO" 0);supress command prompts
  11. (if (= (logand (getvar "UNDOCTL") 4) 4);if UNDO-mode 'Auto', then
  12. (command "_.UNDO" "_GROUP");start UNDO-group
  13. );if
  14. (setvar "DIMZIN" (boole 4 8 OldDzi));set zero-supression
  15.   (setvar "TOOLTIPS" 1)
  16. (setq DwgUnits (getvar "INSUNITS" )
  17.        AreaUnits 0
  18.            ss (ssget '((0 . "HATCH,CIRCLE,ELLIPSE,SPLINE,POLYLINE,LWPOLYLINE"))))
  19. (if   ss
  20. (progn
  21. (setq n (1- (sslength ss)))
  22. (while (>= n 0)
  23. (command "_.AREA" "_OBJECT" (ssname ss n))
  24. (setq AreaUnits (+ AreaUnits (getvar "AREA"))
  25.        n (1- n))
  26. );while
  27. (if
  28. (= SquareUnit "squaremetres" )
  29. (progn
  30. (setq rtosNum (atoi  DeciPlaces )
  31.        AreaMetres (rtos AreaUnits  2 RtosNum)
  32. );setq
  33.    
  34. (alert(strcat"\n" "Area = " AreaMetres "m²"))
  35. );progn
  36. );if
  37. (if
  38. (= SquareUnit "squaremillimetres" )
  39. (progn
  40. (setq rtosNum (atoi  DeciPlaces )
  41.        AreaMetresmm (rtos  (* AreaUnits 1000)  2 RtosNum)
  42. );setq
  43.    
  44. (alert(strcat"\n" "Area = " AreaMetresmm "mm²"))
  45. );progn
  46. );if
  47. );progn
  48. (alert "\nNo Polylines selected!")
  49. );if
  50.    
  51. (setvar "DIMZIN" OldDzi)
  52. (if (= (logand (getvar "UNDOCTL") 4) 4)
  53. (command "_.UNDO"
  54.         "_END"
  55.         "_.UNDO"
  56.         "_MARK"
  57. );command
  58. );if
  59. (setvar "CMDECHO" OldCmd)
  60. (princ)
  61. );defun
  62. ;-------------
  63. ; DCL Function
  64. ;-------------
  65. (defun AreaSqdcl (/  ReturnValue SquareUnitTile)
  66. (defun CheckOnClose (/ )
  67. (cond
  68. ((not (setq SquareUnitTile (get_tile "SquareUnit")));if no buttons filled
  69. (mode_tile "SquareUnit" 2)
  70. )
  71. (T
  72. (setq
  73.        SquareUnit   (substr SquareUnitTile 1)
  74.    DeciPlaces   (nth (read (get_tile "DeciPlaces"))DeciPlacesList)
  75. );setq
  76. (done_dialog 1)
  77. );T
  78. );cond
  79. );defun CheckOnClose
  80. (if (> (setq DLGID (load_dialog "AreaSq.dcl")) 0)
  81. (progn
  82. (new_dialog "AreaSq" DLGID)
  83. (setq DeciPlacesList '("None" "1" "2" "3" ))
  84. (start_list "DeciPlaces")
  85. (mapcar 'add_list  DeciPlacesList)
  86. (end_list)
  87. (if (member DeciPlaces DeciPlacesList);see if the global variable is an available option in the list
  88. (set_tile "DeciPlaces" (rtos (vl-position DeciPlaces DeciPlacesList) 2 0));if it is, set it as default
  89. (set_tile "DeciPlaces" "1");if not, set the default to item 2 in list)
  90. );if
  91. (action_tile "DeciPlaces" "(ErrorDLG 0)")
  92. (action_tile "accept" "(CheckOnClose)")
  93. (action_tile "cancel" "(exit)")
  94. (setq ReturnValue(start_dialog))
  95. (unload_dialog DLGID)
  96. );progn
  97. (not (princ "\nNo DCL"))
  98. );if
  99. ReturnValue
  100. );defun AreaSqdcl
  101. (defun ErrorDLG (pErr)
  102. (cond
  103. ((= pErr 0) (set_tile "error" ""))
  104. );cond
  105. );defun

 
  1. dcl_settings : default_dcl_settings { audit_level = 3 ; }
  2. AreaSq : dialog {
  3.   key = "Display" ;
  4.   label = "Area of an entity" ;
  5.   :boxed_radio_row   {
  6.   fixed_width = true ;
  7.   key = "SquareUnit";
  8.   :radio_button {
  9.   label =  "Square metres                    " ;
  10.   key = "squaremetres" ;
  11.   value = "1";
  12.   }
  13.   :radio_button {
  14.   label =  "Square millimetres   " ;
  15.   key = "squaremillimetres" ;
  16.   }
  17.   }//End radio row
  18.   :boxed_column {
  19.   width = 1 ;
  20.   :popup_list {
  21.   label = "Number of Decimal Places                          ";
  22.   key = "DeciPlaces" ;
  23.   }//popup list
  24.      }//boxed column
  25.   errtile ;
  26.   ok_cancel ;
  27.   }//dialog
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 13:00:48 | 显示全部楼层
嗨,小鱼,
 
您可以查看ObjectDCL网站“支持”部分下的“在线帮助”。
 
这里有你需要的所有文件。
 
不要羞于通过电子邮件直接联系DuctiSoft。
回复

使用道具 举报

33

主题

116

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
250
发表于 2022-7-6 13:07:24 | 显示全部楼层
 
 
嗨,小鱼,
只需查看OpenDCL初学者教程,您将学习如何创建对话框,并将它们快速链接到您的代码。
转到OpenDCL并单击顶部的“教程”选项卡。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:16 , Processed in 0.568709 second(s), 79 queries .

© 2020-2025 乐筑天下

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