明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: flytoday

愿意花100明经币求写代码

  [复制链接]
 楼主| 发表于 2012-4-25 23:32:57 | 显示全部楼层
本帖最后由 flytoday 于 2012-4-25 23:45 编辑

没有人说要帮忙..怕久了没人写啊[em0]
哪位大师愿意帮忙滴说下啊谢谢
回复

使用道具 举报

发表于 2012-4-26 08:13:40 | 显示全部楼层
你的测试图里,没把你要的效果表达出来。最好是表达一下。
疑问 1.A1 放在哪个位置  2.是要标注还是像你测试图里一样写文字,把长度用文字写在线上方。
回复

使用道具 举报

 楼主| 发表于 2012-4-26 08:22:05 来自手机 | 显示全部楼层
本帖最后由 flytoday 于 2012-4-26 08:23 编辑

A1放线中………把长度用文字在线上方…这个用标注也行…就是标注样子要好看点…不然界面会乱
回复

使用道具 举报

发表于 2012-4-26 10:24:27 | 显示全部楼层
本帖最后由 langjs 于 2012-4-26 11:04 编辑

编了一点点,等有空再完善吧。
(defun c:aa (/ color ent h i ll la layer layers name pt pt0 pt0x pt0y pt1 pt1x pt1y pt2 pt2x pt2y r ss txt)
  (defun maketext (txt pt h r color la)
    (entmake (list '(0 . "TEXT") (cons 8 la) (cons 62 color) ; 颜色
     (cons 10 pt)        ; 坐标
     (cons 40 h)        ; 高度
     (cons 1 txt)        ; 内容
     (cons 50 r)        ; 旋转
     '(41 . 0.8) '(72 . 1) (cons 11 pt) ; 坐标
     '(73 . 0)
      )
    )
  )
  (setq h 230)          ; 字体高度
  (setq ll 47)          ; 距离直线
  (setq ss (ssget '((0 . "LINE"))))
  (repeat (setq i (sslength ss))
    (setq name (ssname ss (setq i (1- i))))
    (setq ent (entget name))
    (setq pt1 (cdr (assoc 10 ent)))
    (setq pt2 (cdr (assoc 11 ent)))
    (setq pt1x (car pt1))
    (setq pt1y (cadr pt1))
    (setq pt2x (car pt2))
    (setq pt2y (cadr pt2))
    (setq pt0x (/ (+ pt1x pt2x) 2))
    (setq pt0y (/ (+ pt1y pt2y) 2))
    (setq pt0 (list pt0x pt0y))
    (setq la (cdr (assoc 8 ent)))
    (setq color (vla-get-color (vlax-ename->vla-object name)))
    (setq txt (rtos (distance pt1 pt2)))
    (setq r (angle pt1 pt2))
    (setq pt (polar pt0 (+ r (/ pi 2)) ll))
    (maketext txt pt h r color la)
  )
  (princ)
)

评分

参与人数 2明经币 +2 收起 理由
198526 + 1 我居然这样就得到了100个币,但这程序还是在.
flytoday + 1 很给力!谢谢~

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-4-26 12:47:35 来自手机 | 显示全部楼层
先顶一下哈哈
回复

使用道具 举报

 楼主| 发表于 2012-4-26 17:14:00 | 显示全部楼层
198526 兄弟及langjs 兄弟了。。。。
198526 兄弟的代码
如果能设置几个条件就非常完美了
第1个就是默认条件重线只标注长的一条,等长重线只标注一条
第2个就是标注可以进行字高设置
第3个提供个条件两条平行线距离351mm以内,一种选择是标注一边,一种是两边都标注
第4个支持第二次提取EXL输出。。。如标注完增加。。
我在标注处修改增加的字如3000(B1),90。。。。增加以后通过命令一次性提取下。。。

回复

使用道具 举报

发表于 2012-4-26 17:34:22 | 显示全部楼层
langjs 发表于 2012-4-26 10:24
编了一点点,等有空再完善吧。
(defun c:aa (/ color ent h i ll la layer layers name pt pt0 pt0x pt0y  ...

评分里我居然只能+1个币,我本来是想给您加80个的。我的100个来得太简单了。

点评

你慢慢享用吧,我的明经币够多了,太多也没啥用。  发表于 2012-4-26 17:39
回复

使用道具 举报

发表于 2012-4-26 17:43:32 | 显示全部楼层
flytoday 发表于 2012-4-26 17:14
198526 兄弟及langjs 兄弟了。。。。
198526 兄弟的代码
如果能设置几个条件就非常完美了

1.你可以直接用一个删除重线命令把图清理一下再使用此程序。
2.(setq h 230)你把这个改成(setq h (GETREAL “\n请输入字高”))当然可以再加一个默认值
3.不是很理解,你的意思是线太长了写一个标注在那有时看得不是很方便,想要增加一个可以标两边的选项?如果是这样也不是很麻烦。
4.这个我就无能为力了。

点评

好  发表于 2015-7-30 09:51
回复

使用道具 举报

发表于 2012-4-26 17:44:47 | 显示全部楼层
flytoday 发表于 2012-4-26 17:14
198526 兄弟及langjs 兄弟了。。。。
198526 兄弟的代码
如果能设置几个条件就非常完美了

1.用删除重复线的程序解决。
2.这个好弄
3and4,编起来太复杂
修改一下198526的代码,把多义线加上了,程序稍许完整一点。
(defun c:aa (/ a b chra color db dm dmm ent file_id file_idx h h1 i j la ll n name pt pt0 pt0x pt0y pt1 pt1x pt1y pt2 pt2x pt2y pt3
               ptslist r ss txt vtxlst x )
  (defun dimtext (pt1 pt2)
    (setq pt1x (car pt1)  pt1y (cadr pt1)  pt2x (car pt2)  pt2y (cadr pt2)  pt0x (/ (+ pt1x pt2x) 2)
          pt0y (/ (+ pt1y pt2y) 2)  pt0 (list pt0x pt0y) )
    (setq txt (rtos (distance pt1 pt2))          r (angle pt1 pt2)  pt (polar pt0 (+ r (/ pi 2)) ll)  b (assoc color a)
          db (list (caadr b) (cons txt (cadadr b)))  dm (strcat (car db) (itoa (length (cadr db)))))
    (setq a (subst  (list color db)  b  a ) )
    (maketext (strcat txt "(" dm ")") pt h r color la)
  )
  (defun maketext (txt pt h r color la)
    (entmake (list '(0 . "TEXT") (cons 8 la) (cons 62 color) (cons 10 pt) (cons 40 h) (cons 1 txt) (cons 50 r) '(41 . 0.8) '
                   (72 . 1) (cons 11 pt) '(73 . 0) ) )
  )
  (setvar "cmdecho" 0)
  (vl-load-com)
  (if (setq h1 (getint "\n输入字高:<100>")) (setq h h1) (setq h 100) )
  (setq ll (/ h 2) chra 65 a '())
  (setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE"))))
  (repeat (setq i (sslength ss))
    (setq name (ssname ss (setq i (1- i)))  ent (entget name)  la (cdr (assoc 8 ent)))
    (if (not (assoc 62 ent))
      (setq color (cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 ent))))))
      (setq color (cdr (assoc 62 ent)))
    )
    (if (not (assoc color a)) (setq a (cons (list color (list (chr (+ chra (length a))) nil)) a)) )
    (if (= "LINE" (cdr (assoc 0 ent)))
      (progn(setq pt1 (cdr (assoc 10 ent)) pt2 (cdr (assoc 11 ent)))(dimtext pt1 pt2))
      (progn
        (if (= "LWPOLYLINE" (cdr (assoc 0 ent))) (setq n 2) (setq n 3))
        (setq vtxlst (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object name) 'coordinates))))
        (setq j 0   ptslist nil        )
        (repeat (/ (length vtxlst) n)
          (setq ptslist (append          ptslist
                          (list (list (nth j vtxlst) (nth (1+ j) vtxlst) (if (= n 3) (nth (+ 2 j) vtxlst)  0.0 )) )
                        ))
          (setq j (+ j n))
        )
        (setq pt1 nil  pt2 nil)
        (foreach x ptslist
          (if (null pt1)(setq pt1 x pt3 x ) (setq pt2 x))
          (if pt2 (progn (dimtext pt1 pt2) (setq pt1 pt2)))
        )
        (if (= 1 (cdr (assoc 70 ent)))(dimtext pt2 pt3))
      )
    )
  )
  (setq file_idx (getfiled "指定输出文件路径" "" "xls" 1)
        file_id (open file_idx "w")
  )
  (write-line "颜色号码\t对应代码\t长度" file_id)
  (foreach b (reverse a)
    (setq dmm (strcat (itoa (car b)) "\t" (caadr b)) n 0 )
    (foreach x (reverse (cadadr b))
      (write-line (strcat dmm (itoa (setq n (1+ n))) "\t" x) file_id)
    )
  )                                     
  (close file_id)
  (princ)
)






点评

兄弟太感谢你了。。谢谢。。。  发表于 2012-4-26 18:09

评分

参与人数 1明经币 +1 收起 理由
T_T + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-4-26 18:08:53 | 显示全部楼层
198526 发表于 2012-4-26 17:43
1.你可以直接用一个删除重线命令把图清理一下再使用此程序。
2.(setq h 230)你把这个改成(setq h (GETRE ...

不知道为什么有时重线消除不干净。。侧试图中我试了下有些重线无法消除。。
那个两边标注我想将程序用到其它地方。都是两根平行线我只想。。标注一根所以。才想有个设置该多好哈

不过还是谢谢你哈
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-6 14:31 , Processed in 0.190771 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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