明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1644|回复: 9

[求助]请问在autolisp中如何定比例?(save me!!!)为什么没人理我?

[复制链接]
发表于 2003-5-15 18:37 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2003-5-15 18:37:44 编辑


(defun c:lx()
  (setq pa (getpoint"请输入圆心:"))
  (setq rr (getreal"请输入半径:"))
(command "circle" pa rr "")
)
(prin1)
比如这样一个程序,如果想让它在程序加载并执行命令后,自动地根据图纸的大小(也就是A1、A2、A3、A4等)来调整自己的大小,如何改动这个程序呢?

                             
发表于 2003-5-15 18:59 | 显示全部楼层

我的建议

我想,你为什么要改变比例,应该是为了打印该文档时方便一点吧,如果是这样,给你一个建议,如下
你打印的图形中,应该有一些是不能随便改变其大小的,比如一条墙的长度,厚度,这些都是应该按打印比例改变而在纸上改变大小的,
而你想要改变的一些图元一般都是一些标志,标注之类的吧,
如果满足这两个条件,你可以用你自己做的程序去画这些标志,标注实体,这个程序应该给这个实体加个扩展数据,然后设置一个用户系统变量userr1用来保存关于插入图框的大小信息,比如0.2就表示用1:200打印,最后在打印前作一个程序,首先获得先前程序生成的包含相关扩展数据的实体,然后根据userr1的值,用循环和(command "scale" ..)给这个选择集里的所有实体放大缩小,这就是我想到的办法,也许版主他们有更好的办法
 楼主| 发表于 2003-5-15 19:12 | 显示全部楼层

[求助]不好意思,你说的我不太懂。

对不起,你说的我不太明白,在编程时如何做呢?能再具体一点吗?实在是麻烦你了。





                         我也有同感
发表于 2003-5-15 21:24 | 显示全部楼层

哦,可能是我把你的意思理解错了,这样会好些

(defun c:for_you(/ fact pa rr)
  (if (or (< (getvar "userr1") 0.001) (> (getvar "userr1") 10))
    (setvar "userr1" 0.2)
    )
  (setq fact (/ (getvar "userr1") 0.2))
  (setq pa (getpoint"请输入圆心:"))
  (setq rr (* (getreal"请输入半径:") fact))
  (command "circle" pa rr "")
  )

每次你开始画图时,先把系统变量userr1设置好,这是用来为你的打印设置的,不同打印比例,userr1的值不同,因此,你得circle画出来也不一样
 楼主| 发表于 2003-5-16 19:59 | 显示全部楼层

太好了,我懂了,本人非常感谢。

你一定是一位高手,我可以经常请教你吗?我学这个语言也是刚开始,我觉得很难,有时候想几天也想不出来。有时候真想放弃。有你们的指点,我才有了信心。现我又有一个问题,我自己编的共享子程序,在我的机子上加载后能用,而如果到另一台机子上要用,也一定必须加载它吧。这不是很麻烦。有别的办法吗?

                          能结识你是我的荣幸
发表于 2003-5-16 21:42 | 显示全部楼层

可以在acad.lsp文件里加上一句话

首先要说的是,我决不是什么高手,非典型菜鸟一只,只是你问的问题简单而已了,任何一个lisp程序都要加载之后才能用里面的函数,你可以在cad安装目录下找到acad.lsp文件,加上一行语句,用来加载你想加载的lsp文件,因为acad.lsp文件是一个特殊的lsp文件,每次cad启动时都加载这个lsp文件,所以在这个文件里加上一句话后,就不用在用appload命令了,
最后,给你一点建议,如果你想学lisp,还是先看看书比较好,首先要了解一些很基本的知识,你可以先简单看一下cad定制的书,然后看一下lisp的书,参考一下你们单位的lisp程序,然后针对你不能解决的问题来发帖子,这样,你得帖子别人会更感兴趣
发表于 2008-3-1 22:48 | 显示全部楼层
现在市面上关于LSP的图书有哪些呢?我手上只有打印版的LSP程序入门,要找本LSP的书可真不容易啊!我在成都
发表于 2008-3-3 01:32 | 显示全部楼层
在测绘中常见的软件大多都是使用改变线型比例来识别图形的比例的,你可以试试!(getvar "linetype")(setvar "linetype" ????)
发表于 2008-4-2 16:26 | 显示全部楼层
完全不用这么麻烦,改变出图比例就可以了.
发表于 2008-4-23 14:23 | 显示全部楼层
照四楼的做法去做,大部分的测绘软件都是折磨做的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 11:55 , Processed in 0.138745 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表