乐筑天下

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

[编程交流] 动态块和Lisp

[复制链接]

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 11:54:02 | 显示全部楼层 |阅读模式
又是我问了另一个问题。
 
我正在编写一个lisp来插入一个块,如果你选择的话,你可以用一个引线来标记它,它会自动填充另一个块和属性文本。具有属性文本的块是一个简单的动态块,具有一个额外的插入点。因此,当您要插入属性块时,只需按CTRL键,即可循环切换到右侧或左侧的to插入点。
 
我想在lisp中定义使用哪一边。这是我的逻辑。
 
P1(x1,y1)是要详细说明的块的插入点。
P2(x2,y2)是我的领导者登陆点
如果x2>=x1,则使用右侧(原始插入点),否则使用左侧(由动态块定义的第二个点)
 
第一部分很简单。我将使用P2作为插入点。这是第二种选择。我需要告诉autocad首先使用第二个点作为插入点,然后将其插入P2。这可能吗?
 
我想我可以做两块,一块是右侧插入,一块是左侧插入。我宁愿要一个,但如果我需要2个,我会的。
 
  1. ;;;---------------------------------------------------------
  2. ;;;
  3. ;;;under development
  4. ;;;
  5. ;;;---------------------------------------------------------
  6. (defun C:FPJ1 (/ )
  7. (setq CRcecho (getvar "cmdecho"))    ;;;store curret sysvar
  8. (setq CRdimas (getvar "dimassoc"))
  9. (setvar "cmdecho" 0)
  10. (setvar "dimassoc" 2)
  11. (setq CRdmsty (getvar "DIMSTYLE"))
  12. ;------------------------------------------------------------------------
  13. (setq *error*                ;;;resets sysvar incase of
  14.     (lambda (msg)            ;;;an error, esc, exit, cancel
  15.       (setvar "cmdecho" CRcecho)
  16.       (setvar "dimassoc" CRdimas)
  17.       (command "-dimstyle" "r" CRdmsty)
  18.       (princ msg)
  19.       (princ)))
  20. ;------------------------------------------------------------------------
  21. (setq FPTag "C:/Documents and Settings/TEMP/My Documents/LISP/fpart/fpart")
  22. (setq FPPaP "C:/Documents and Settings/TEMP/My Documents/LISP/fpart/F")
  23. (or *FPnameG* (setq *FPnameG* "?"))
  24. (setq CRuprec (getvar "LUPREC"))
  25. (setq CRLunit (getvar "LUNITS"))
  26. (or
  27.    (eq "" (setq tmp (getstring (strcat "\nF-Part to insert <" *FPnameG* ">: "))))
  28.    (setq *FPnameG* tmp))
  29. (setq FPPath (strcat FPPaP *FPnameG*))
  30. (initget "Yes No")   
  31. (setq TagAns (getkword (strcat "\nTag Fpart? [Yes/No] <No>: ")))
  32. (if (/= TagAns "Yes")
  33.        (progn
  34.      (setq FPP1 (getpoint "\nSpecify insertion point: "))
  35.      (command "-insert" FPPath FPP1 "1" "1" pause))
  36.    
  37.        (progn
  38.      (setq FPAtTxt (strcase (strcat "F" (substr *FPnameG* 1 2) "." (substr *FPnameG* 3 2))))
  39.      (setq FPP1 (getpoint "\nSpecify insertion point: "))
  40.      (command "-insert" FPPath FPP1 "1" "1" pause)
  41.      (command "-dimstyle" "r" "leader")
  42.      (setq CRDSCL (getvar "DIMSCALE"))
  43.      (initget 6)
  44.      (setq FPDSCL (cond
  45.             ((getreal (strcat "\nSpecify scale factor <" (rtos CRDSCL CRLunit CRuprec) ">: ")))
  46.             (CRDSCL)))
  47.      (setq FPLP1 (getpoint "\nSpecify point of leader landing"))
  48.       (if (<= (car FPLP1) (car FPP1))
  49.          (setq FPLP2 (list (- (car FPLP1) 0.125)  (cadr FPLP1)))
  50.          (setq FPLP2 (list (+ (car FPLP1) 0.125)  (cadr FPLP1)))
  51.           )
  52.      (princ "\n>>Press *Ctrl* to cycle insertion point")
  53.      (command "_.leader" FPP1 FPLP1 FPLP2 "" "" "b" FPTag pause FPDSCL FPDSCL "0" FPAtTxt)))
  54. ;--------------------------------------------------------------------------
  55.    (setvar "cmdecho" CRcecho)    ;;;restore previous settings
  56.    (command "-dimstyle" "r" CRdmsty)
  57. (princ)
  58. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:05:16 | 显示全部楼层
哈哈,太棒了。现在,我试图查找您使用的一些命令,但它们没有列在acad帮助文件中。比如vla insertblock。它没有列出。在哪里可以获得这些命令的列表。
回复

使用道具 举报

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 12:14:52 | 显示全部楼层
查看帮助ActiveX和VBA参考
作为Lisp的规则
方法->vla方法
属性->vla put\get属性
回复

使用道具 举报

2

主题

74

帖子

72

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:24:53 | 显示全部楼层
 
哈哈,很高兴你喜欢
 
正如GeoBuilder所说,在VLIDE中键入vla insertblock并双击它以高亮显示整个单词,然后单击帮助图标。
 
这可能会给你一些启示:
 
http://www.cadtutor.net/forum/showpost.php?p=258403&postcount=9
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:37:37 | 显示全部楼层
As,而不是“点击

                               
登录/注册后可看大图
”高亮显示整个单词后,可以按Ctrl+F1组合键
回复

使用道具 举报

2

主题

74

帖子

72

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:48:39 | 显示全部楼层

 
在vlide编辑器上时
-点击apropos选项(A)
-键入函数名或第一个字母,如vla-vlax-等。。。或者使用可用的搜索选项
-并在apropos results下突出显示函数名
-然后单击帮助图标
 
最初的vital lisp中还剩下一些函数,如vlax get、vlax put等。。。。现在没有记录的
 
hth-
回复

使用道具 举报

2

主题

47

帖子

45

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 13:01:16 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:34 , Processed in 0.384602 second(s), 80 queries .

© 2020-2025 乐筑天下

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