乐筑天下

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

绘制距离(夸张比例)

[复制链接]

2

主题

8

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2012-3-1 16:56:34 | 显示全部楼层 |阅读模式
我画了一些垂直放大2倍的横截面。有人知道这样一个计算图形上两点之间斜率距离的好方法吗: "))
   (setq str1 "Yes")
)
(if (= str1 "Yes")
   (setq up-dn (/ pi 2))
   (setq up-dn (-(/ pi 2)))
)
(setvar "CMDECHO" 0)
(if (= slphgt nil)(if (= (getvar "CVPORT") 1)(setq slphgt 0.1)(setq slphgt (/ 0.1 (getvar "CANNOSCALEVALUE")))))
(setq tom (getreal (strcat " Text Size:: ")))
(if tom (setq slphgt tom))
(if (= hscal nil)(setq hscal 20.0))
(setq tom (getreal (strcat " Horizontal Scale:: ")))
(if tom (setq hscal tom))
(if (= vscal nil)(setq vscal 5.0))
(setq tom (getreal (strcat " Vertical Scale:: ")))
(if tom (setq vscal tom))
(setq sfactor (/ hscal vscal 100)
       rem1 (getvar "luprec")
)
(if (= sl-prec nil)(setq sl-prec 2))
(setq tom (getreal (strcat " Precision:: ")))
(if tom (setq sl-prec tom))
(princ "\nsl-prec = ")
(princ sl-prec)
(setvar "luprec" sl-prec)
(setvar "osmode" 1)
(setq
  pt1 (getpoint "From: ")
  pt2 (getpoint pt1 "To: "))
(princ "\n")
(while pt2
   (if pt3(princ " "))
   (setq
    stylet (getvar "textstyle")
    entlay (getvar "clayer")
    azrad (angle pt1 pt2))
   (setq
    azr2 (- azrad up-dn)
    pt3 (list(/(+(car pt2)(car pt1))2)(/(+(cadr pt2)(cadr pt1))2))
    txt (strcat "Slope=" (rtos(/ (-(cadr pt2)(cadr pt1)) sfactor
;    txt (strcat(rtos(/ (-(cadr pt2)(cadr pt1)) sfactor
                       (-(car pt2)(car pt1))))"%")
    txt_pt (polar pt3 azr2 slphgt)
   )
   (princ "Slope=")
   (princ txt)
   (setq elist (list '(0 . "TEXT") (cons 1 txt) (cons 7 stylet)
    (cons 8 entlay) (cons 10 txt_pt) (cons 11 txt_pt) (cons 40 slphgt)
    (cons 50 azrad) '(71 . 0) '(72 . 1) '(73 . 2)))
   (entmake elist)
   (entmod elist)
   (setq
    pt1 pt2
    pt2 nil
    pt2 (getpoint pt1))
   (princ)
)
(setvar "osmode" rem)
(setvar "luprec" rem1)
(princ)
)[/code]
代码的荣誉属于Tom Beauford
http://forums . augi . com/show thread . PHP?t=107096
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2012-3-1 18:12:38 | 显示全部楼层
我最终为此制作了自己的简单LSP:

  1. (defun C:sloped ()
  2. (setq exg (getint "\nVertical Exaggeration : "))
  3. (setq P1 (getpoint "\nPick first point: "))
  4. (setq P2 (getpoint "\nPick second point: "))
  5. (setq P1x (car P1))
  6. (setq P1y (cadr P1))
  7. (setq P2x (car P2))
  8. (setq P2y (cadr P2))
  9.   (setq slopedistance (sqrt(+ (expt (- P1x P2x) 2) (expt (* exg (- P1y P2y)) 2))))   
  10.                
  11. (prin1 slopedistance)
  12. )

我试图让它在距离上方画一条线(像一个维度),但我很难做到。
回复

使用道具 举报

38

主题

1350

帖子

6

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1502
发表于 2012-3-1 19:20:40 | 显示全部楼层
blahdc,
我有一个用于斜坡的lisp。看看这个修改,看看它是否接近您需要的。(原始代码可能来自The Swamp的某人,只是不记得了,所以如果是这样,请考虑一下。)
拜伦
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 00:48 , Processed in 0.937647 second(s), 69 queries .

© 2020-2025 乐筑天下

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