明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: ynhh

[提问] 手工画直线的方法如何写成代码

[复制链接]
 楼主| 发表于 2023-10-2 22:19:30 | 显示全部楼层
lostbalance 发表于 2023-10-2 21:41
你指的是模拟AutoCAD的line命令画直线吗?那可以这样:
1. 在cad中输入:   (command "line")
2. 根据cad ...

谢谢您的热心指点
感觉有时手工操作与编写程序还是有点区别的
还是要慢慢学习摸索
谢谢您
发表于 2023-10-3 09:47:31 | 显示全部楼层
ynhh 发表于 2023-10-2 21:34
我看你的示范
和手工画图一样的
这不用什么程序都可以办到的

二、起点 A 带角度 J  画指定距离  L 的直线,直接用输入角度 <J 的方法        这不就是你需求的吗    也是line命令所具有的功能啊
发表于 2023-10-3 09:52:13 | 显示全部楼层
(defun c:lll(/ QD ZD)
  (setq qd(getpoint "\n 请点取直线的起点"))
  (setq zd(getpoint qd "\n 点取终点或输入坐标值,或输入<加角度值,再输入距离:"))
  (entmake (list '(0 . "line") (cons 10 qd) (cons 11 zd) ))
  (princ)
)

这就是模拟line命令的代码
发表于 2023-10-3 10:29:59 | 显示全部楼层
guosheyang 发表于 2023-10-2 18:05
是这样模拟line命令吗  用get函数写一个就是 get函数本身有这个功能

 楼主| 发表于 2023-10-3 12:18:38 | 显示全部楼层
guosheyang 发表于 2023-10-3 09:52
(defun c:lll(/ QD ZD)
  (setq qd(getpoint "\n 请点取直线的起点"))
  (setq zd(getpoint qd "\n 点取 ...

谢谢您的热心指导
发表于 2023-10-3 14:26:07 | 显示全部楼层
一、起点 A 以 B 点为方向控制点, 画指定距离  L 的直线    这个目标也可借助grread函数变相实现

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-10-12 13:50:41 | 显示全部楼层
在论坛上找的类似命令



  1. ;;;动态角度矩形
  2. (defun c:are (/ os pt1 pt2 pt3 pt4 ag0 ag len ent ct in k)
  3.   (setq os (getvar "osmode"))
  4.   (while (and (setq pt1 (getpoint "\n角点1:"))
  5.               (setq ag0  (getangle pt1 "角度:"))
  6.        (progn (princ "对角点:") (setq ct t))
  7.        (progn
  8.   (setq ct t k t ent nil)
  9.          (while ct
  10.     (setq in (grread 1))
  11.     (cond
  12.        (  (= 5 (car in))
  13.                         (setq pt3 (cadr in))
  14.                         (setq len (distance pt1 pt3) ag  (angle pt1 pt3) )
  15.                         (setq pt2 (polar pt1 ag0 (* len (cos (- ag ag0)))))
  16.                         (setq pt4 (polar pt1 (+ (/ pi 2.) ag0) (* len (sin (- ag ag0)))))
  17.           (if ent (command "erase" ent ""))
  18.           (setvar "osmode" 0)
  19.           (command "pline" pt1 pt2 pt3 pt4 "c" )
  20.           (setvar "osmode" os)
  21.           (setq ent (entlast))
  22.                      )
  23.        (  (= 3 (car in))
  24.           (setq pt3 (cadr in))
  25.                         (setq len (distance pt1 pt3) ag  (angle pt1 pt3) )
  26.                         (setq pt2 (polar pt1 ag0 (* len (cos (- ag ag0)))))
  27.                         (setq pt4 (polar pt1 (+ (/ pi 2.) ag0) (* len (sin (- ag ag0)))))
  28.           (if ent (command "erase" ent ""))
  29.           (setvar "osmode" 0)
  30.           (command "pline" pt1 pt2 pt3 pt4 "c" )
  31.           (setvar "osmode" os)
  32.           (setq ent (entlast))
  33.           (setq ct nil)
  34.        )
  35.        (  (equal '(11 0) in)
  36.           (if ent (command "erase" ent ""))
  37.           (setq ct nil k nil)
  38.        )
  39.        (t)
  40.     )  
  41.          )
  42.          k
  43.        )
  44.     )
  45.       
  46.   )
  47.   (setvar "osmode" os)
  48.   (princ)
  49. )

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

本版积分规则

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

GMT+8, 2024-11-17 06:19 , Processed in 0.161967 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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