ZZXXQQ 发表于 2009-9-1 19:29:00

1、用entget函数选取图线;<br/>2、在grread函数循环中使用entget中的点作为上一点,动态的用grdraw函数将鼠标当前点画线;同时根据两点的距离动态更改线条的线性比例。

jxlsp 发表于 2009-9-1 20:15:00

fl202发表于2009-9-1 15:13:00static/image/common/back.gif其实这样的用途更大,这个没有规范要求是多少,具体倍数放大的话要试好几次才能得到比较满意的效果。而用这个程序一次即可得到满意的效果。

<p>你这只是视觉上的效果,而图是要打印出来用的,规范有严格要求实部多长,虚部多长,所以只有输入放大倍数才能满足要求.</p>

贱人 发表于 2009-9-2 00:47:00

有意思,仿制一下:);;动态调节线性比例,仿制userzhl的程序
;;加入对比例为0和1时的判断,防止因1时无组码48,0时总是无法获得正确比例的容错处理
;;贱人20090902
(defun c:aa( /ss ssn en e48pt1 dist M new48 ViewDist i newen Y-get-eyeshot )
(defun Y-get-eyeshot (/ );$orr)
(setq rt    '()
ptctr (getvar "viewctr")
vph   (getvar "viewsize")
vps   (getvar "screensize")
ratio (/ (car vps) (cadr vps))
vpw   (* ratio vph)
)
(setq ptlb
(list
    (- (car ptctr) (/ vpw 2))
    (- (cadr ptctr) (/ vph 2))
)
)
(setq ptrt
(list
    (+ (car ptctr) (/ vpw 2))
    (+ (cadr ptctr) (/ vph 2))
)
)
(setq rt (list ptlb ptrt))
)

;---
(setq ss (ssget ":s:e" '((0 . "Arc,Circle,Line,LWPOLYLINE"))))
(if ss
    (progn
      (setq ssn (ssname ss 0)
             en(entget ssn)
      )
      (if (not (setq e48 (cdr (assoc 48 en))))
      (progn
          (setq e48 1
             newen (list (car en))
             en (cdr en)
             i   0
          )

          (repeat 8
            (setq newen (cons (car en) newen)
               en(cdr en)
                  i(+ i 1)
            )
          )
          (setq newen (cons (cons 48 1) newen)
             newen (reverse newen)
                en (append newen en)
             newen nil
          )
      )
      )
      (setq pt1 (getpoint "\n指定点:"))
      (if pt1
      (while (/= (car (setq M (grread T 5 0))) 3)
          (setq dist (distance pt1 (cadr M))
                ViewDist (distance (car (Y-get-eyeshot)) (cadr (Y-get-eyeshot)))
          )
          (if (= dist 0)
            (setq dist 0.01)
          )
          (if (= e48 0)
            (setq new48 (* (/ dist ViewDist) 100 0.1 1))
            (setq new48 (* (/ dist ViewDist) 100 0.1 e48))
          )
          (entmod (subst (cons 48 new48) (cons 48 e48) en ))
      )
      )
    )
)
(princ)
)

AMTONNY 发表于 2009-9-2 07:12:00

<p></p><p>(command "change" p1 "" "p" "color" "252" "ltype"( "DASHED2"此处为线型)</p><p><br/>&nbsp; (if (&lt;= hh 0.7 )此数据为线长,楼主自已改吧</p>

AMTONNY 发表于 2009-9-2 07:14:00

<p></p><p>再来一个自动的</p>

5061220 发表于 2009-9-2 09:56:00

<p>学习动态修改</p>

lijiao 发表于 2009-9-2 10:19:00

(getpoint (getpoint))

AMTONNY 发表于 2009-9-2 12:46:00

呵呵,宝贝已经被锁住了,应该要好好地反省下自已的言行哦,光说不练,连个小程序也要人家加他QQ收费,如何还打出一个:取之于明,用之于明哦.

jxlsp 发表于 2009-9-2 17:25:00

贱人发表于2009-9-2 0:47:00static/image/common/back.gif有意思,仿制一下:);;动态调节线性比例,仿制userzhl的程序;;加入对比例为0和1时的判断,防止因1时无组码48,0时总是无法获得正确比例的容错处理;;贱人20090902(defun c:aa( /&nbsp; ss ssn en

</div><p>帮你加了根檬皮线.</p>

fl202 发表于 2009-9-3 08:22:00

jxlsp发表于2009-9-1 20:15:00static/image/common/back.gif你这只是视觉上的效果,而图是要打印出来用的,规范有严格要求实部多长,虚部多长,所以只有输入放大倍数才能满足要求.

<p>请问是哪个规范规定的?标准号是多少?</p><p>我是做化工设计的,这个专业的规范上好像没有这方面的规定。同时感谢楼上几位给的程序和思路,谢谢!</p>
页: 1 [2] 3
查看完整版本: [求助]求此程序的代码or所用函数or编程方法or fas、VLX程序?谢谢。