乐筑天下

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

[编程交流] [AutoCad 2008 AutoLisp]Printi

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:46:45 | 显示全部楼层 |阅读模式
大家好!
 
如您所见,我一直在使用AutoCad 2008。问题是在哪里可以找到有关在AutoLisp中为AutoCad打印API的信息?
 
我想要实现的是:
 
例如,我用多段线画了一个三角形。
然后我在那个三角形周围画一个A4框架。
最后一步是我选择画框,里面的所有画(以及A4画框本身)都进入我的打印机。
我的眼睛上出现了一个在A4框架中画得很漂亮的三角形。
 
谢谢你的进步!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:53:50 | 显示全部楼层
使用Visual LISP IDE(VLIDE)帮助文档研究以下内容:
 
使用vla get plot检索plot对象,该对象具有以下属性和方法,我已经突出显示了与您相关的属性和方法:
 
方法
显示绘图预览
绘图仪
绘图文件
SetLayoutsToPlot设置布局
启动BatchMode
 
属性
应用
静音模式
副本数
批次绘图进度
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:59:18 | 显示全部楼层
李·麦克,
感谢您的快速回复。首先,我对Activex对象模型完全陌生,如果你们不介意的话,我有一些问题想问你们。
 
1、我找到了获取plot对象的方法
接下来,如果我正确理解了这个概念,现在我可以尝试使用“PlotToDevice”方法打印空白列表。所以我写了以下内容
  1. (vla-PlotToDevice plot)
但是:返回vlax false(通过我的打印机打开的方式)。请你解释一下我做错了什么?我错过了什么?
 
2.如何区分vla、vlax、vlr前缀?它们通常是什么意思?
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:03:49 | 显示全部楼层
 
假设已为您尝试打印的布局正确设置打印配置;您需要设置要打印的区域。
 
下面是一个快速示例:
 
如果您使用自己的PC3打印配置,则可以删除为布局设置打印属性的许多表达式,因为您只需将其提供给PlotToDevice方法。
 
我已设置示例来绘制当前布局、打印范围、居中打印、缩放以适应。
 
您需要更改打印设备的名称(以红色突出显示以满足您的要求),或者如果已经为布局设置了绘图仪,则需要删除此行。
 
  1. (defun c:test ( / acapp acdoc aclay acplt )
  2.    (setq acapp (vlax-get-acad-object)
  3.          acdoc (vla-get-activedocument acapp)
  4.          acplt (vla-get-plot acdoc)
  5.          aclay (vla-get-activelayout acdoc)
  6.    )
  7.    (vla-zoomextents acapp)
  8.    (vla-refreshplotdeviceinfo aclay)
  9.    (vla-put-configname aclay [color=red]"YourPlotDevice"[/color])
  10.    
  11.    (vla-put-plottype aclay acExtents)
  12.    (vla-put-centerplot aclay :vlax-true)
  13.    (vla-put-standardscale aclay acscaletofit)
  14.    (vla-put-PlotRotation aclay (if (LM:Landscape-p) ac90degrees ac0degrees))
  15.    
  16.    (vla-put-numberofcopies acplt 1)
  17.    (vla-setlayoutstoplot acplt
  18.        (vlax-make-variant
  19.            (vlax-safearray-fill
  20.                (vlax-make-safearray vlax-vbstring '(0 . 0)) (list (vla-get-name aclay))
  21.            )
  22.        )
  23.    )
  24.    (eq :vlax-true (vla-plottodevice acplt))
  25. )
  26. (vl-load-com) (princ)
  27. (defun LM:Landscape-p nil
  28.    (< 1.0 (apply '/ (mapcar '- (getvar 'EXTMAX) (getvar 'EXTMIN) '(0. 0.))))
  29. )

 
弗拉-*
 
ActiveX属性和方法的类型库前缀。
 
vl-*/vlax-*
 
Visual LISP函数与ActiveX无关,是旧“Vital LISP”的一部分。
 
vlr-*
 
反应堆功能(类似于VBA事件)。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:09:45 | 显示全部楼层
李,谢谢!
 
它起作用了。现在我必须理解所有这些可怕的Activex函数。顺便问一下,“LM:”前缀是什么意思?使用“/”符号并在函数的参数列表中写入所有局部变量是否至关重要?当设置局部变量的值时,我可以避免它们吗?例如,我可以这样做吗
  1. 3

我这样问是因为它们都能工作。有什么问题?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:13:55 | 显示全部楼层
 
这是我的作者前缀-“LM”=“Lee Mac”。它对函数的操作方式没有影响,因为“LM:example”只是另一个符号。“C:”前缀是唯一具有使命令在命令行中可用的效果的前缀。
 
在共享开源代码时,作者前缀很有用,因为除其他原因外,它更容易跟踪函数的源代码。
 
 
是的,非常重要-为了理解为什么,请阅读我在这里关于这个主题的教程。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:17:58 | 显示全部楼层
很棒的图坦卡门。非常感谢。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:22:09 | 显示全部楼层
..........
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:31:12 | 显示全部楼层
 
干杯!
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:32:23 | 显示全部楼层
如何更改“Plot…”中的刻度测量值(从英寸到毫米)使用AutoLisp的窗口?我需要能够将代码中的“比例”设置为1:1毫米(不是英寸)。例如
它将比例设置为1:1英寸。我想用同样的代码,但用毫米。是否有更改测量值的命令?
 
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 08:01 , Processed in 0.516878 second(s), 83 queries .

© 2020-2025 乐筑天下

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