找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1288|回复: 9

[编程申请]:绘制箭头程序

[复制链接]
发表于 2003-5-15 16:14:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请编一程序用于绘制箭头,要求可输入箭头大小、箭头起点、箭头终点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 4个

财富等级: 恭喜发财

发表于 2003-5-15 20:16:38 | 显示全部楼层

  1. (defun c:zxjt (/ ang h2 jtl oldcm oldos pt1 pt2 pt3 scale)

  2.   (setq oldcm (getvar "cmdecho"))
  3.   (setq oldos (getvar "osmode"))
  4.   (setvar "cmdecho" 0)
  5.   (setvar "osmode" 0)
  6.   (setq scale (getreal "\n请输入比例<100>:"))
  7.   (if (= scale nil)
  8.     (setq scale 100)
  9.   )
  10.   (setq h2 (* 0.8 scale)
  11.         jtl (* 4 scale)
  12.   )
  13.   (setq pt1 (getpoint "\n请输入第一点:"))
  14.   (setq pt3 (getpoint pt1 "\n请输入第二点:"))
  15.   (setq ang (angle pt1 pt3))
  16.   (setq pt2 (polar pt1 ang jtl))
  17.   (command "pline" pt1 "w" 0 h2 pt2 "w" 0 0 pt3)
  18.   (setvar "cmdecho" oldcm)
  19.   (setvar "osmode" oldos)
  20.   (princ "\n  ")
  21.   (princ "\n继续使用pline命令")
  22.   (princ)
  23. )


晓东工具箱 0.27 完整安装版
http://www.xdcad.net/down/show.php?id=227
我的工具箱下载地址http://www.xdcad.net/forum/showt ... y=&pagenumber=3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-18 14:22:02 | 显示全部楼层
这些代码放在哪里才行呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2003-5-18 18:15:45 | 显示全部楼层
将上述代码存为hjt.lsp然后在cad中加载即可
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-10 13:13:27 | 显示全部楼层
有没有不用spline线绘箭头啊,一但改变线宽箭头也变了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11288个

财富等级: 富甲天下

发表于 2005-3-10 20:14:54 | 显示全部楼层
最初由 luob72 发布
[B]有没有不用spline线绘箭头啊,一但改变线宽箭头也变了 [/B]

您可以用LEADER命令画单箭头。
箭头的大小由尺寸标注变量控制。
1、为简化使用,也可以用下面的小程序画单箭头。
[php]
(DEFUN C:MLEADER ()
(COMMAND "LEADER" PAUSE PAUSE "" "" "N")
(PRINC)
)
[/php]
2、或用下面的小程序画双箭头。
[php]
(DEFUN C:DLEADER ()
(IF (SETQ PT1 (GETPOINT "\nFirst extension line origin :"))
  (IF (SETQ PT2 (GETPOINT PT1 "\nSecond extension line origin :")) (PROGN
   (SETQ OLDSE1 (GETVAR "DIMSE1")
         OLDSE2 (GETVAR "DIMSE2"))
   (SETVAR "DIMSE1" 1)
   (SETVAR "DIMSE2" 1)
   (COMMAND "DIMALIGNED" PT1 PT2 "T" " " PT2)
   (SETVAR "DIMSE1" OLDSE1)
   (SETVAR "DIMSE2" OLDSE2)
  ))
)
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-10 22:15:55 | 显示全部楼层
;可选择线段的顶点绘制箭头
(defun ureal (bit kwd msg def / inp)

(if def

(setq msg (strcat "\n" msg "<" (rtos def) ">: ")

bit (* 2 (fix (/ bit 2)))

)

(if (= " " (substr msg (strlen msg) 1))

(setq msg (strcat "\n" (substr msg 1 (1- (strlen msg))) ": "))

(setq msg (strcat "\n" msg ": "))

)

)

(initget bit kwd)

(setq inp (getreal msg))

(if inp inp def)

)


(defun upoint (bit kwd msg def bpt / inp)

(if def

(setq pts (strcat

(rtos (car def))

","

(rtos (cadr def))

(if

(and (caddr def) (= 0 (getvar "FLATLAND")))

(strcat "," (rtos (caddr def)))

""

)

)

msg (strcat "\n" msg "<" pts ">: ")

bit (* 2 (fix (/ bit 2)))

)

(if (= " " (substr msg (strlen msg) 1))

(setq msg (strcat "\n" (substr msg 1 (1- (strlen msg))) ": "))

(setq msg (strcat "\n" msg ": "))

)

)

(initget bit kwd)

(setq inp

(if bpt

(getpoint msg bpt)

(getpoint msg)

)

)

(if inp inp def)

)

(setq cm(getvar "cmdecho"))

(setvar "cmdecho" 0)


(defun C:AR ( / #dwgsc w v pt1 pt2 pt3 )

(if(= arscl nil)(setq arscl 0.1875))

(setq #dwgsc(getvar "DIMSCALE")

W(getvar "PLINEWID")

V(getvar "OSMODE")

L(getvar "CLAYER"))

(setq arscl(ureal 7 "" "请输入箭头长度" arscl))

(setvar "OSMODE" 1)

(setq pt1 (upoint 1 "" "指定箭头顶点" nil nil))

(setvar "OSMODE" 512)


(setq PT(entsel "\n选择直线上要画箭头一端的任意一点"))

(setq PT2(cadr PT))

(setq ED(entget(car PT)))

(setq PT3 (polar PT1 (angle PT1 PT2) (* #dwgsc arscl)))

(command "PLINE" pt1 "w" "0" (* #dwgsc (/ arscl 3)) pt3 "")

(setvar "OSMODE" V)

(setvar "CLAYER" L)

(setvar "plinewid" W)

(princ)

)

(setvar "cmdecho" cm)

(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-9 20:24:50 | 显示全部楼层
用命令"PL"可以的,不知行不行?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-9 22:25:59 | 显示全部楼层
先画线,后画箭头:
[php]
;;;加载通用函数
;;;下载:http://www.xdcad.net/forum/showthread.php?s=&threadid=325268
(load "xyp_lib")

(defun c:test ()
  (cmdla0)
  (setbl)
  (setq        wide (* 200 sc)
        leng (* 500 sc)
        mode 1
  )
  (while (not (setq pt1 (getpoint "\n请输入起点 : "))))
  (while (not (setq pt2 (getpoint pt1 "\n请输入下一点 : "))))
  (grvecs (list 1 pt1 pt2))
  (command "pline" pt1)
  (while mode
    (setq pt3 (getpoint pt2 "\n请输入下一点<退出> : "))
    (if        pt3
      (progn
        (command pt2)
        (grvecs (list 1 pt2 pt3))
        (setq pt1 pt2
              pt2 pt3
        )
      )
      (setq mode nil)
    )
  )
  (setq        ang  (angle pt1 pt2)
        dist (distance pt1 pt2)
        pt0  (polar pt1 ang (- dist leng))
  )
  (command pt0)
  (command "w" wide 0 pt2)
  (command "")
  (redraw)
  (cmdla1)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2357个

财富等级: 金玉满堂

发表于 2005-6-21 17:31:29 | 显示全部楼层
(vl-load-com)
(defun c:ad( / ss sum ent i )
(setq ss (ssget '((0 . "lwpolyline,polyline,line"))))
(setq sum 0)
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq ent (vlax-ename->vla-object ent))
(setq sum (+ sum (vlax-curve-getDistAtPoint ent (vlax-curve-getEndPoint ent))))
(setq i (1+ i))
)   
  (prompt "\n选定的直线根数: " )
(prin1 i)  
   (prompt "\n选定的直线总长: " )
(prin1 sum)
   (prompt "\n选定的直线平均长: " )
(/ sum i)  
)

以上内容与主题有何关系?by xyp1964[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-22 07:12 , Processed in 0.501836 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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