乐筑天下

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

[编程交流] 关于“wblock”命令

[复制链接]

22

主题

100

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2022-7-5 16:46:55 | 显示全部楼层 |阅读模式
大家好
 
 
在autocad 2010中,当我在命令行中键入“wblock”时。
cad将跳出一个对话框来选择/设置。
但是当我编写lsp文件时,上下文如下。
  1. (defun c:partial_saving(/)
  2. (command "-wblock")
  3. )

 
cad变成命令行模型。我阅读了帮助文件。上面写着
我不应该将filedia设置为0。所以我把代码改为
  1. (defun c:partial_saving(/)
  2. (setvar filedia 1)
  3. (command "-wblock")
  4. )

 
更糟的是。cad只是给出了一些错误。
如果我想展示对话,我该怎么做?有人能帮我吗??
谢谢
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-5 16:54:12 | 显示全部楼层
  1. (initdia)(command "._wblock")
回复

使用道具 举报

1

主题

14

帖子

13

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:55:53 | 显示全部楼层
大家好,
 
我需要编写一个程序,从整个图形创建wblock。我还需要这个程序通过键入一个简单的命令来自动执行以下所有功能:
[列表=1]
  • 在命令行上,输入wblock。
  • 在“写块”对话框的“源”下,单击“整个图形”。
  • 在“目标”下的“文件名”框中,输入WBLOCK的文件名。
  • 在“位置”框中,输入要保存WBLOCK(新图形文件)的位置。
  • 单击“确定”创建新的图形文件。
    我知道如何调用现有的autocad命令,但我不确定如何执行步骤2到5。
    这是我到目前为止得到的:
     
    1. [color=#383838](defun c:wblockm ()
    2. (initdia)(command "._wblock")
    3. )[/color]

    请帮忙!我试着这么做了一段时间,终于得出结论,我需要一些帮助。
     
    谢谢
  • 回复

    使用道具 举报

    4

    主题

    194

    帖子

    192

    银币

    初来乍到

    Rank: 1

    铜币
    25
    发表于 2022-7-5 16:59:46 | 显示全部楼层
     
    请参阅此代码以了解您的错误。
    回复

    使用道具 举报

    4

    主题

    194

    帖子

    192

    银币

    初来乍到

    Rank: 1

    铜币
    25
    发表于 2022-7-5 17:05:31 | 显示全部楼层
    试试这个;
     
    1. (defun c:partial_saving (/ tmpvar)
    2. (if (= (setq tmpvar (getvar 'filedia)) 0)
    3. (setvar 'filedia 1)
    4. )
    5. (vl-cmdf "-wblock" "file name" "*")
    6. (setvar 'filedia tmpvar)
    回复

    使用道具 举报

    1

    主题

    14

    帖子

    13

    银币

    初来乍到

    Rank: 1

    铜币
    5
    发表于 2022-7-5 17:09:52 | 显示全部楼层
    嗨,Snownut,
     
    这让我更接近我想要的!
     
    因此,当我运行此代码时,它会提示我输入输出文件的名称,然后选择“整个图形”,然后文件会保存在我的桌面上。但我希望所有这些都能自动完成。我希望每次都将文件命名为Melanie,并在输入partial\u saving命令时保存在此位置(“C:\\AutoCAD\\”Melanie.dwg”)。
     
    我希望在代码中执行以下操作:
     
    wblock输入输出文件的名称:nil
    输入输出文件名:Melanie
    输入现有块的名称或
    [=(块=输出文件)/*(整个图形)]:*
     
    这可能吗?
    回复

    使用道具 举报

    4

    主题

    194

    帖子

    192

    银币

    初来乍到

    Rank: 1

    铜币
    25
    发表于 2022-7-5 17:14:29 | 显示全部楼层
    这应该会奏效;
     
    1. (defun c:partial_saving ( / tmpvar)
    2. (if (= (setq tmpvar (getvar 'filedia)) 0)
    3.    (setvar 'filedia 1)
    4.    )
    5. (vl-cmdf "-wblock" "C:\\Autocad\\Melanie.dwg" "*")
    6. (setvar 'filedia tmpvar)
    7. );defun

     
    刚刚更正了文件名。。。。。
    回复

    使用道具 举报

    4

    主题

    194

    帖子

    192

    银币

    初来乍到

    Rank: 1

    铜币
    25
    发表于 2022-7-5 17:15:52 | 显示全部楼层
    最后一步,删除文件(如果已经存在);
    1. (defun c:partial_saving ( / file)
    2. (if (setq file(findfile "C:\\Autocad\\Melanie.dwg"))
    3.    (vl-file-delete file)
    4.    )
    5. (vl-cmdf "-wblock" "C:\\Autocad\\Melanie.dwg" "*")
    6. );defun
    回复

    使用道具 举报

    1

    主题

    14

    帖子

    13

    银币

    初来乍到

    Rank: 1

    铜币
    5
    发表于 2022-7-5 17:19:10 | 显示全部楼层
    谢谢Snownut这太棒了!!
     
    (/文件)是什么意思?vl cmdf是什么意思?
     
    非常感谢你!!!
    回复

    使用道具 举报

    4

    主题

    194

    帖子

    192

    银币

    初来乍到

    Rank: 1

    铜币
    25
    发表于 2022-7-5 17:25:11 | 显示全部楼层
    (/file)声明变量“file”,函数使用局部变量,nil在函数完成时将其输出。(不会以这种方式搅乱内存)
     
    vl cmdf是与“command”函数等效的Visual Lisp,它在执行时不像command函数那样调用wblock对话框。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-13 14:16 , Processed in 0.914410 second(s), 72 queries .

    © 2020-2025 乐筑天下

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