乐筑天下

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

[编程交流] 新错误&创建文件夹

[复制链接]

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:26:36 | 显示全部楼层 |阅读模式
我已经使用这个程序很长时间了。我在年初写的,(感谢amsi提供的一些代码)
 
但突然间,它给了我一个错误。不像在错误中那样。但并不是像我希望的那样做,基本上距离是随机的。但随机接近它应该是什么,但不完全。
 
 
  1. ;;;;;;;;;;; ;Welcome to the item bubble lisp ;;;;;;;;;;;
  2. ;;;;;;;;;;; ;Verson 0.01    ;;;;;;;;;;;
  3. ;;;;;;;;;;; ;Created on 17 Feb 2009  ;;;;;;;;;;;
  4. ;;;;;;;;;;; ;Last edited by Flower on   ;;;;;;;;;;;
  5. ;;;;;;;;;;; ;7 april 2009    ;;;;;;;;;;;
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  9. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11. (defun c:IT (/ *error* Mypoint1 Mypoint2 itemang tOldLayer oldosmode bl itemdist)
  12. (vl-load-com)
  13. (defun my_error (errormsg)
  14. (if (not (member ERRORMSG '("console break" "Function Cancelled")))
  15.   (princ  (strcat "\nError:" errormsg))
  16. )
  17. (setvar "osmode" oldosmode)
  18. (setq *error* temperr)
  19.    (setvar "cmdecho" 1)
  20.    (princ)
  21. )
  22. (defun PutDynamicProperty(Block Property Value / oVal cVal)
  23. (if(= 'ENAME(type Block))
  24.   (setq Block(vlax-ename->vla-object Block))
  25.     ); end if
  26. (if(= :vlax-true(vla-get-IsDynamicBlock Block))
  27.   (foreach p
  28.    (vlax-safearray->list
  29.     (vlax-variant-value
  30.      (vla-GetDynamicBlockProperties Block)
  31.     )
  32.    )
  33.    (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
  34.     (progn
  35.      (setq cVal(vlax-make-variant Value vlax-vbDouble))
  36.      (if
  37.       (vl-catch-all-error-p
  38.        (vl-catch-all-apply
  39.         'vla-put-Value(list p cVal)
  40.        )
  41.       )
  42.       (setq oVal nil)
  43.       (setq oVal Value)
  44.      ); end if
  45.     ); end progn
  46.    ); end if
  47.   ); end foreach
  48.     ); end if
  49. ; oVal
  50. )
  51. ;
  52. (setvar "cmdecho" 0)
  53. (setq tOldLayer (getvar "CLAYER")
  54. oldosmode (getvar "osmode")
  55. temperr *error*                                         
  56. *error* my_error
  57. )
  58. (command "osmode" "512")
  59. (setq Mypoint1 (getpoint "\nSelect tip of Arrow : ")
  60. Mypoint2 (getpoint "\nSelect Centrepoint of Bubble: " Mypoint1)
  61. )
  62. (command "osmode" oldosmode)
  63.   (if (not(tblsearch "block" "ITEMBALLOON"))
  64.    (progn
  65.   (command "-insert" "ITA" Mypoint2  "1" "1" "0")
  66.     (COMMAND "ERASE" (ENTLAST) "")
  67. )
  68. )
  69. (setq itemdist (rtos (distance Mypoint1 Mypoint2)2 0)
  70.   itemang (angle Mypoint2 Mypoint1)
  71.   ds (getvar "dimscale")
  72. )
  73. (if (= itnumba nil)
  74. (setq itnumba nxtitno)
  75. )  
  76. (if (= nxtitno nil)
  77. (setq nxtitno 1)
  78. (setq nxtitno (+ itnumba +1))
  79. )
  80. (setq itemnumba (rtos nxtitno 2 0)
  81. itnumba (getINT (STRCAT "\nWhat number? <" itemnumba "> :"))
  82. )
  83. (if (or (= itnumba nil)(= itnumba ""))
  84. (setq insertnumba nxtitno)
  85.    (setq insertnumba (rtos itnumba 2 0))
  86. )
  87. (command "ATTDIA" 0)
  88. (setvar "CLAYER" "dim")
  89. (command "-insert" "ITEMBALLOON" Mypoint2 DS DS "0" insertnumba)
  90. (if (= tOldLayer "dim")
  91. (setvar "CLAYER" "YELLOW")
  92. (setvar "CLAYER" tOldLayer)
  93. )
  94. (command "ATTDIA" 1)
  95. (setq bl (entlast))
  96. (PutDynamicProperty bl "itemdistance" itemdist)
  97. (PutDynamicProperty bl "ANGLE" itemang)
  98. ;(PutDynamicProperty bl "Visibility" "Pointer")
  99. (setvar "cmdecho" 1)
  100. (princ)
  101. )

 
 
 
 
另外,如何创建“c:\Program Files\Flowers文件夹”之类的文件夹
很容易将文件写入文件夹等,但不能创建propper文件夹
ITA。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 14:32:47 | 显示全部楼层
确保snap和grid处于关闭状态,如果您使用osmode设置,这些设置在某些缩放比例下可能会发生奇怪的事情拉我的头发试图找出为什么1个程序在缩放比例出现问题的所有时间都不工作多年来发现了各种lisp错误,这些错误只是Autocad的一部分,必须围绕它们编写。
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:41:05 | 显示全部楼层
事实上,我不时地看到缩放错误。
Osmode,网格关闭,它发生在几张图纸上,因此我担心,随着时间的推移,它已经搞砸了几次。
 
你有没有建议一个更好的方法,即使用osmode,以获得最近的结果?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:44:22 | 显示全部楼层
希望这能帮你解决这个问题,但是如果我有更多的时间,我想重写它
 
  1. ;;;;;;;;;;; ;Welcome to the item bubble lisp ;;;;;;;;;;;
  2. ;;;;;;;;;;; ;Verson 0.01                     ;;;;;;;;;;;
  3. ;;;;;;;;;;; ;Created on 17 Feb 2009          ;;;;;;;;;;;
  4. ;;;;;;;;;;; ;Last edited by Flower on        ;;;;;;;;;;;
  5. ;;;;;;;;;;; ;7 April 2009                    ;;;;;;;;;;;
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. (defun c:IT (/ *error* Mypoint1 Mypoint2 itemang tOldLayer oldosmode bl itemdist)
  8. (vl-load-com)
  9. (defun my_error (errormsg)
  10. (if (not (member errormsg '("console break" "Function Cancelled")))
  11.   (princ  (strcat "\nError:" errormsg)))   
  12. (setvar "osmode" oldosmode)
  13. (setq *error* temperr)
  14.    (setvar "cmdecho" 1)
  15.    (princ))
  16. (defun PutDynamicProperty (Block Property Value / oVal cVal)
  17. (if (= 'ENAME (type Block))
  18.   (setq Block (vlax-ename->vla-object Block)))
  19. (if (= :vlax-true (vla-get-IsDynamicBlock Block))
  20.   (foreach p
  21.    (vlax-safearray->list
  22.     (vlax-variant-value
  23.      (vla-GetDynamicBlockProperties Block)
  24.     )
  25.    )
  26.    (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
  27.     (progn
  28.      (setq cVal(vlax-make-variant Value vlax-vbDouble))
  29.      (if
  30.       (vl-catch-all-error-p
  31.        (vl-catch-all-apply
  32.         'vla-put-Value(list p cVal)
  33.        )
  34.       )
  35.       (setq oVal nil)
  36.       (setq oVal Value)
  37.      ); end if
  38.     ); end progn
  39.    ); end if
  40.   ); end foreach
  41.     ); end if
  42. ; oVal
  43. )
  44. ;
  45. (setvar "cmdecho" 0)
  46. (setq tOldLayer (getvar "CLAYER")
  47. oldosmode (getvar "osmode")
  48. temperr *error*                                         
  49. *error* my_error
  50. )
  51. (command "osmode" "512")
  52. (setq Mypoint1 (getpoint "\nSelect tip of Arrow : ")
  53.       Mypoint2 (getpoint "\nSelect Centrepoint of Bubble: " Mypoint1)
  54. )
  55. (command "osmode" oldosmode)
  56.   (if (not(tblsearch "block" "ITEMBALLOON"))
  57.    (progn
  58.     (command "-insert" "ITA" Mypoint2  "1" "1" "0")
  59.     (COMMAND "ERASE" (ENTLAST) "")
  60. )
  61. )
  62. (setq  itemdist (rtos (distance Mypoint1 Mypoint2) 2 0)
  63.        itemang  (angle Mypoint2 Mypoint1)
  64.   ds (getvar "dimscale")
  65. )
  66. (or itemnumba (setq itemnumba 1))
  67. (setq tmp (getINT (STRCAT "\nWhat number? <" itemnumba "> :"))
  68. )
  69. (or (not tmp) (Setq itemnumba tmp))
  70. (command "ATTDIA" 0)
  71. (setvar "CLAYER" "dim")
  72. (setvar "OSMODE" 0)
  73. (command "-insert" "ITEMBALLOON" Mypoint2 DS DS "0" itemnumba)
  74. (if (= tOldLayer "dim")
  75. (setvar "CLAYER" "YELLOW")
  76. (setvar "CLAYER" tOldLayer)
  77. )
  78. (command "ATTDIA" 1)
  79. (setq bl (entlast))
  80. (PutDynamicProperty bl "itemdistance" itemdist)
  81. (PutDynamicProperty bl "ANGLE" itemang)
  82. ;(PutDynamicProperty bl "Visibility" "Pointer")
  83. (setvar "cmdecho" 1)
  84. (Setvar "OSMODE" oldosmode)
  85. (princ)
  86. )
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:49:52 | 显示全部楼层
 
 
我也一样,但正如你所说,时间。。。。
 
 
基本上你所做的一切,除了更改了项目编号,
将osmode设置为“0”
粗暴地说,这应该是因为它被插入一个点,而不应该折断?
 
谢谢你的帮助。
 
有人知道如何创建文件夹的tho吗?
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 14:56:23 | 显示全部楼层
查看vl mkdir以创建文件夹。
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 15:01:32 | 显示全部楼层
干杯
 
 
“10字符长”
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 15:06:13 | 显示全部楼层
对于最近的问题,可以使用“entsel”,它可以为您提供选择点,您必须在代码中查找该点。
 
已找到(SETQ TP1(entsel“\n选择墙:”)
(setq tpp1(entget(汽车tp1)))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:12:55 | 显示全部楼层
您可以将ENTSEL的返回点捕捉到“最近”:
 
或者,(并且更可靠):
 
  1. 3
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 15:18:02 | 显示全部楼层
它们可能更可靠,但是,
这太麻烦了。
 
基本上所有的输入应该是,引导点,圆心和什么数字。
 
它快速简单
 
谢谢你的帮助。。
 
可悲的是,情况越来越糟,我把它从工作中为我的同事们准备的Lisp程序程序中拉了出来。
 
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:02 , Processed in 0.451797 second(s), 72 queries .

© 2020-2025 乐筑天下

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