Kenter 发表于 2022-7-6 10:35:35

插入按钮

我正在制作一个程序,允许用户在工作空间中插入一个或两个箭头按钮。插入的按钮是一个箭头,因此它可以是向上箭头或向下箭头,具体取决于旋转方向。有关放置,请参见附图。这基本上就是我希望程序最终要做的。
 
程序运行
选择基点
按钮类型??(89,90,91,92;颜色;材料;标记)
1或2个箭头?(1或2个btn)
 
在z中查找图形:\
如果图纸不存在,(princ“\n文件不存在”)
 
如果输入1 btn,则
箭头方向(上/下)
如果向下,将btn旋转180度
插入btn地图车(0+4.125 0)
 
elsif输入了2个btn,然后
插入btn映射(0+5.375 0)
插入btn旋转180度的地图车(0+2.875 0)
 
附件是我的出发点代码。运行时,它会提示用户按钮的样式、材质、颜色和标记。它将给定的所有信息存储到名为“Pressel”的变量中。我希望它在一个特定的驱动器中定位文件(如z:\),然后将其插入
用户选择的屏幕。我想扩展它以满足我的需要,但遇到了“障碍”,不确定如何继续。
感谢您的帮助。
 
肯特
起点。lsp

Lee Mac 发表于 2022-7-6 10:42:03

我无法测试这一点,因为我没有障碍,但它可能会为您指明正确的方向:
 

(defun c:ARW ( / *error* vl ov f p d )
;; © Lee Mac 2010

(defun *error* ( msg )
   (and ov (mapcar 'setvar vl ov))
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ)
)

(setq vl '("CLAYER" "CMDECHO" "OSMODE") ov (mapcar 'getvar vl))

(if (and
       (setq f
         (findfile
         (strcat "PR"
             (apply 'strcat
               (mapcar
               (function
                   (lambda ( foo str init )
                     (and init (initget 1 init)) ((eval foo) str)
                   )
               )
               '(getkword getkword getkword)
               '("\nSpecify Type : "
                   "\nSpecify Material : "
                   "\nSpecify Colour : "
                  )
               '("89 90 91 92" "S B" "R W A G")
               )
             )
             "-AR.dwg"
         )
         )
       )
       (setq p (getpoint "\nSpecify Insertion Point: "))
       (setq d (getangle "\nSpecify Direction: " p))

       (mapcar 'setvar (cdr vl) '(0 0))
      
       (or (tblsearch "LAYER" "PBFACE")
         (not (command "_.-layer" "_M" "PBFACE" ""))
       )
       (setvar 'CLAYER "PBFACE")
   )   
   (command "_.-insert" f "_non" (polar p (/ pi 2.) 4.125) "" "" (- (* 180. (/ d pi)) 90.))
)

(mapcar 'setvar vl ov)
(princ)
)
   

alanjt 发表于 2022-7-6 10:44:39

Command: arw

Specify Type :

Specify Material :

Specify Colour :

** Error: bad argument type: stringp nil **

Lee Mac 发表于 2022-7-6 10:46:38

哈哈!这将教会我不要测试它
 
上面修好了,谢谢伙计。

Kenter 发表于 2022-7-6 10:50:22

嘿,李,
界面很好,很简单。唯一的问题是,在选择颜色后,它会立即停止程序。指定类型、材质、颜色,然后只指定命令:我给出了文件的确切名称。但没有选择插入点的提示。是否必须以某种方式将目录添加到autocad?

Kenter 发表于 2022-7-6 10:53:47

我试着把这个输入到命令行,结果一无所获。我直接看了看名字,它说找不到。
 
(findfile“PR90SR-1-B44”)

Lee Mac 发表于 2022-7-6 10:55:11

是的,我不确定这个障碍是否在你的支持道路上。。
 
两种解决方案:
 
1) 添加块的位置作为支撑路径
 
2) 在LISP中指定目录并“strcat”它以在第一个findfile调用中作为文件名的前缀。
 
记住标记任何MOD
 

Kenter 发表于 2022-7-6 10:59:51

我很乐意标记mods。并将块添加到支持路径中。。。。选项->文件选项卡->+支持文件搜索路径->添加
 
还是只针对DCL文件??

Lee Mac 发表于 2022-7-6 11:02:13

支持路径可以包含需要通过AutoCAD进行搜索的任何类型的文件

Kenter 发表于 2022-7-6 11:05:55

有没有办法添加一个包含子文件夹的整个文件夹作为支持驱动器。我正在导入的图形位于网络驱动器上,我不希望必须将每个子文件夹添加到办公室中的所有计算机才能使用它。
页: [1] 2
查看完整版本: 插入按钮