明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1529|回复: 6

关于图元的简单问题?

[复制链接]
发表于 2004-11-14 09:36:00 | 显示全部楼层 |阅读模式
初学Autolisp,现在不知道怎么对CAD里的对象进行操作。比如,我要将一条直线长度变成原先的一半,中心不变,用lisp该怎么写。是不是象C++对象,请哪位大哥大姐,完整写出来看看,让我学习学习
发表于 2004-11-15 21:31:00 | 显示全部楼层
用length 。具体操作你平时怎么用CAD的。在程序中就怎么写。LISP就是模拟你重复经常的命令操作。。。。例如


(setq ss (entsel"请选择直线对象"))


(command "length" ss "" 5 "")假设你的直线长度是10


这就能达到目的。以后多多交流啊。明经是个好地方啊。。
发表于 2004-11-16 22:54:00 | 显示全部楼层
(defun c:chlen(/ en endata startpoint_x startpoint_y endpoint_x
endpoint_y midpoint_x midpoint_y midpoint)
(setvar "cmdecho" 0)
(setq en (car (entsel"\n选取一直线: ")))
(setq endata (entget en))
(setq startpoint_x (cadr (assoc 10 endata)))
(setq startpoint_y (caddr (assoc 10 endata)))
(setq endpoint_x (cadr (assoc 11 endata)))
(setq endpoint_y (caddr (assoc 11 endata)))
(setq midpoint_x (/ (+ startpoint_x endpoint_x) 2))
(setq midpoint_y (/ (+ startpoint_y endpoint_y) 2))
(setq midpoint (list midpoint_x midpoint_y 0))
(command "scale" en "" midpoint ".5")
(prin1)
)
 楼主| 发表于 2004-11-17 20:25:00 | 显示全部楼层
受教了


谢谢楼上的两位
发表于 2004-11-18 20:18:00 | 显示全部楼层
(setq startpoint_x (cadr (assoc 10 endata)))
(setq startpoint_y (caddr (assoc 10 endata)))
________________________ ((-1 . <图元名: 7ef51e80>) (0 . "LINE") (330 . <图元名: 7ef51cf8>) (5
. "88") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbLine") (10 335.152 655.123 0.0) (11 808.89 627.472 0.0) (210 0.0 0.0 1.0)) 其中, (10 335.152 655.123 0.0),但不知道为何要用caddr取Z坐标,不是应用cadr取Y坐标和用carX坐标吗?
发表于 2004-11-19 08:18:00 | 显示全部楼层
car取出来的是10,而不是X坐标...
发表于 2004-11-19 09:55:00 | 显示全部楼层
  1. ;;能处理的物件(SPLINE,LINE,LWPOLYLINE,POLYLINE,ARC,ELLIPSE---ARC)
  2. (defun C:TT (/ ENT VOBJ SP EP OBJNAME)
  3.    (vl-load-com)
  4.    (setq ENT (car (entsel "\nSelect line: ")))
  5.    (setq VOBJ (vlax-ename->vla-object ENT))
  6.    (setq OBJNAME (vla-get-objectname VOBJ))
  7.    (setq SP (vlax-curve-getstartpoint VOBJ))
  8.    (setq EP (vlax-curve-getendpoint VOBJ))
  9.    (command "_.lengthen" "p" 75 (list ENT SP) "")
  10.    (if (wcmatch OBJNAME "AcDb2dPolyline,AcDb3dPolyline")
  11.        (setq ENT (entlast))
  12.    )
  13.    (command "_.lengthen"
  14.        "p"
  15.        (* 100 (/ 2.0 3))
  16.        (list ENT EP)
  17.        ""
  18.    )
  19.    (princ)
  20. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 06:23 , Processed in 0.155834 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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