gcho 发表于 2011-3-2 18:18:31

如何快速按比例作图

本帖最后由 gcho 于 2011-3-2 20:37 编辑

LISP在理论上能不能做到调试CAD系统参数啊,我的想法:

作图步骤:
①当前作图比例1:?(给定具体值)
②画直线(或其它命令),鼠标点击起点,指定下一点时键盘输入数值a
③图上的直线长度自动变为了1000/?*a

已经上传了传附件。

zag0666 发表于 2012-8-13 00:20:41

其实有一个非常头疼的问题,当你到一个单位。
此单位已经有几千张可以用来借鉴和修改的图纸都是按照1:N来绘制的时候,
恐怕只能改变自己绘制的习惯了。

alexmai 发表于 2019-11-8 15:58:18

zag0666 发表于 2012-8-17 12:36
楼上这世界本来就没有什么是“正确”。下面我只讲好处了:
1. 编辑一个图纸始终要比,重新绘制要快。把老 ...

这些都不是事,最大的好处就是:
线型是不受缩放影响的(除非线型放在块内)不同比例放在同一张图内,打印出来的虚线都保持一致

在模型空间画不同比例是可以的
先把你“参考内容”,根据提示的尺寸缩放到1:1
然后在1:1上画
标完尺寸,文字,画完后,组成块后,保留该块,日后编辑时用块编辑来修改
然后copy这个块,你想放的"比例 / 该打印图纸比例" 放置到打印框上

15年前就是这样画图的,现在见到深有体会

tjc5471 发表于 2018-4-9 00:38:56

本帖最后由 tjc5471 于 2022-5-10 23:37 编辑

其实对于修改图纸来说楼主的需要还是有市场的,又回来看看了。ZZXXQQ兄的代码很实用的,不过绘制前设定比例比选择标注更切合实际?能否改写一下代码让我等小白拿来用呢?

caoyin 发表于 2011-3-2 18:27:47

怎么不能传附件啊?



使用高级模式

gcho 发表于 2011-3-2 18:53:49

刚上传了附件,请帮忙看看!

liu_kunlun 发表于 2011-3-2 19:01:50

按1:1作图,最后缩放一下不就可以了?

ZZXXQQ 发表于 2011-3-2 19:21:25

手工做图时要进行比例换算。计算机绘图最好是1:1的绘图。要改掉比例换算这个习惯。

gcho 发表于 2011-3-2 20:15:14

本帖最后由 gcho 于 2011-3-2 20:15 编辑

大家说的方法我知道,我只是想寻找一种新的作图方法,因为1:1作图时是方便,最后画完了要缩放,再用相应的比例去标注图形尺寸,这个过程不是很麻烦,麻烦就是下次修改这个图时就要进行换算了(这时你不可能再缩放到1:1去修改吧),这个换算过程是很费时的,如果自己编一个命令(比方说PLSC),回到我帖子的顶端要求,那么就省很多时了,唉,只是苦于我对LISP一窍不通,不能自己完成这个小小的程序,还望高手们相助,先拜谢了!

ZZXXQQ 发表于 2011-3-2 20:58:20

为什么要缩放?出图时给比例不行吗?

gcho 发表于 2011-3-2 21:17:51

我是搞水工的,出图没有建筑方面要求规范,一般都是出A3的小图,可想而知,有时一张图纸上可能有多个断面图,且每个断面图可能比例不一样,所以画图时是要缩放的!

yshf 发表于 2011-3-2 21:21:09


(defun c:plcs()
    (if (= (setq blc (getreal "\n1:?<1>")) nil)
      (setq blc 1)
    )
    (setq bl (/ blc 1000.0))
    (initget "L C")
    (if (= (setq bz (getkword "\n画直线-L/画圆-C <L>:")) nil)
      (setq bz "L")
    )
    (cond ((= bz "L")
             (while (setq p1 (getpoint "\n起点<回车结束>:"))
               (if (and (setq p2 (getpoint p1 "\n止点所在方向:"))
                        (setq ll (getreal (strcat "\n直线长度<" (rtos (getvar "userr5")) ">:")))
                     )
                     (progn
                        (setvar "userr5" ll)
                        (setq ang (angle p1 p2)
                              pt(polar p1 ang (/ ll bl))
                        )
                        (command "_line" p1 pt "")
                     )
               )
             )
          )
          ((= bz "C")
             (while (setq p1 (getpoint "\n圆心<回车结束>:"))
                (if (setq rr (getreal (strcat "\n半径<" (rtos (getvar "userr4")) ">:")))
                  (progn
                     (setvar "userr4" ll)
                     (command "_circle" p1 (/ rr bl))
                  )
                )

             )
          )
    )
    (princ)
)

gcho 发表于 2011-3-2 22:02:37

本帖最后由 gcho 于 2011-3-2 22:11 编辑

回复 yshf 的帖子

你的代码很好,希望再优化一下:
1、能自动记忆上次的操作,比如上次是1:100,这次默认就是1:100,询问是否更改,不更改就直接回车画线或者画圆;
2、能否将<复制>,<偏移>命令追加到<回车结束>后面,因为画图的时候肯定要用到复制或者偏移等命令,复制或偏移的时候要输入距离,这个距离也只用输实际距离最方便。

页: [1] 2 3 4 5 6 7
查看完整版本: 如何快速按比例作图