乐筑天下

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

[编程交流] 条件语句

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:20:40 | 显示全部楼层
这就决定了一切。非常感谢李。。。
回复

使用道具 举报

6

主题

23

帖子

17

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:22:20 | 显示全部楼层
我刚刚才意识到geomcal并没有预先加载到绘图会话中,
 
  1. (defun c:test ( / _line pt1 pt2 pt1a pt1b ang )
  2.    (defun _line ( a b ) (entmakex (list (cons 0 "LINE") (cons 10 a) (cons 11 b))))
  3.    
  4.    (if
  5.        (and
  6.            (setq pt1 (getpoint "\nPt1: "))
  7.            (setq pt2 (getpoint "\nPt2: " pt1))
  8.        )
  9.        (progn
  10.            ;; 'getpoint' returns points in UCS
  11.            ;; pt1 = UCS
  12.            ;; pt2 = UCS
  13.            ;; 'angle' returns the angle measured from
  14.            ;; the X-Axis of the current construction plane.
  15.            (setq ang (angle pt1 pt2))
  16.            ;; Now to calculate the points using the polar function:
  17.            (setq pt1a
  18.                (polar
  19.                    (polar pt1 (- ang (/ pi 2.)) 6.0)
  20.                    ang
  21.                    10.0
  22.                )
  23.            )
  24.            (setq pt1b
  25.                (polar
  26.                    (polar pt1 (+ ang (/ pi 2.)) 6.0)
  27.                    ang
  28.                    10.0
  29.                )
  30.            )
  31.            ;; Lines are defined in WCS, so now we transform all points
  32.            ;; from UCS to WCS:
  33.            (setq pt1  (trans pt1  1 0)
  34.                  pt1a (trans pt1a 1 0)
  35.                  pt1b (trans pt1b 1 0)
  36.            )
  37.            ;; Display the result:
  38.            (_line pt1 pt1a)
  39.            (_line pt1 pt1b)
  40.        )
  41.    )
  42.    (princ)
  43. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:27:19 | 显示全部楼层
谢谢pBe。我还将在我的子例程中包括这一点。没有你们我怎么活。非常感谢你!
 
回复

使用道具 举报

6

主题

23

帖子

17

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:29:48 | 显示全部楼层
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:33:23 | 显示全部楼层
 
Thanks, I'm glad it was comprehensible.
 
 
You can use it if you wish.
 
 
No, since getpoint returns points in UCS, not WCS.
 
If you needed the point in WCS, you would use:
 
  1. (trans (getpoint "\nPoint: ") 1 0)
回复

使用道具 举报

6

主题

23

帖子

17

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:37:28 | 显示全部楼层
That sets it all. Much thanks Lee...
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:39:32 | 显示全部楼层
I only realize just now that geomcal is not pre-loaded on a drawing session,
 

[code](defun c:test (/ p1 p2 p3 p1_ p2_) (if (not (member "geomcal.arx" (arx)))   (arxload "geomcal") )  (setq p1 (getpoint "\nPick Point1")p2 (getpoint "\nPick Point2")p3 (getpoint "\nPick Point3") ) (setq p1_ (polar p1 (angle p1 p2) (/ (distance p1 p2) 2))p2_ (car (vl-sort (list p1 p2)    (function (lambda (y1 y2)         (> (cadr y1) (cadr y2))       )    )  )    ) ) (if (
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:40:55 | 显示全部楼层
You can also use the area of a triangle...
 
  1. (defun AT:TriangleArea (a b c) ;; Returns area of three provided points ;; If returned value is negative, last point (c) exists on right side of a-b vector ;; Alan J. Thompson, 06.09.10 (/ (- (* (- (car b) (car a)) (- (cadr c) (cadr a)))       (* (- (cadr b) (cadr a)) (- (car c) (car a)))    )    2. ))
回复

使用道具 举报

6

主题

23

帖子

17

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:45:26 | 显示全部楼层
Thanks pBe. I'll also include this on my artillery of sub routines. How can I live without you guys. Thank you very much!
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 08:37 , Processed in 0.416706 second(s), 69 queries .

© 2020-2025 乐筑天下

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