找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1409|回复: 5

[求助] 求改进代码

[复制链接]
发表于 2013-12-16 10:11:41 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 上善若水001 于 2013-12-16 10:26 编辑

以下代码为网上寻得,麻烦大侠们帮忙改进下,谢谢!
要求:将选择后的表中重复项保留一项,并在面积后添加一项“数量”
(defun c:qq (/ appxls col ent ent1 f i lst m2 newbook newitem newsheet numrow pt ss txt value xlscells xlsworkbooks)
  (defun initexcel ()
    (setq appxls (vlax-get-or-create-object "excel.application")
          xlsworkbooks (vlax-get-property appxls "workbooks")
          newbook (vlax-invoke-method xlsworkbooks "add")
          newsheet (vlax-get-property newbook "sheets")
          newitem (vlax-get-property newsheet "item" 1)
          xlscells (vlax-get-property newitem "cells")
    )
    (vla-put-visible appxls :vlax-true)
  )
  (defun endexcel ()
    (vlax-release-object xlscells)
    (vlax-release-object newitem)
    (vlax-release-object newsheet)
    (vlax-release-object newbook)
    (vlax-release-object xlsworkbooks)
    (vlax-release-object appxls)
  )
  (defun datacell (nurow col value)
    (vlax-put-property xlscells "item" numrow col (vl-princ-to-string value))
  )
  (setvar "cmdecho" 0)
  (vl-load-com)
  (if (setq ss (ssget '((0 . "*TEXT"))))
    (progn
      (= lst nil)
      (repeat (setq i (sslength ss))
        (setq ent (entget (ssname ss (setq i (1- i))))
              pt (cdr (assoc 10 ent))
              txt (cdr (assoc 1 ent))
        )
        (command "-boundary" pt "")
        (command ".region" (entlast) "")
        (setq ent1 (entlast))
        (if (= (cdr (assoc 0 (entget ent1))) "REGION")
          (setq ent (vlax-ename->vla-object ent1)
                m2 (rtos (vla-get-area ent))
                lst (cons (list txt m2) lst)
                f (entdel ent1)
          )
        )
      )
      (setq lst (vl-sort lst (function (lambda (x y)
                                           (< (car x) (car y))
                                         )
                               )
                 )
      )
      (setq lst (cons (list "版号" "面积") lst))
      (initexcel)
      (setq numrow 1)
      (foreach f lst
        (datacell numrow 1 (car f))
        (datacell numrow 2 (cadr f))
        (setq numrow (1+ numrow))
      )
      (endexcel)
    )
  )
  (princ)
)

新建文件夹.rar

18.33 KB, 下载次数: 5

对应文件

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-16 10:25:06 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-12-16 10:26 编辑

文字处保证能生成闭合线?
是在已有表增加?还是新建表?

点评

论坛里找的,很多看都看不懂所以自己改不了,来求救来了。。。。。。。。。  详情 回复 发表于 2013-12-16 10:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-16 10:28:34 | 显示全部楼层
st788796 发表于 2013-12-16 10:25
文字处保证能生成闭合线?
是在已有表增加?还是新建表?

{:soso_e117:}论坛里找的,很多看都看不懂所以自己改不了,来求救来了。。。。。。。。。

点评

你得说清楚要做什么才好有针对性修改,另外这个程序能不能运行,运行结果哪里和你的要求有差距,这些要让别人明白了才好帮你  详情 回复 发表于 2013-12-16 10:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-16 10:36:26 来自手机 | 显示全部楼层
上善若水001 发表于 2013-12-16 10:28
论坛里找的,很多看都看不懂所以自己改不了,来求救来了。。。。。。。。。

你得说清楚要做什么才好有针对性修改,另外这个程序能不能运行,运行结果哪里和你的要求有差距,这些要让别人明白了才好帮你
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-16 17:11:58 | 显示全部楼层
  1. (defun c:tt (/ ss strl)
  2.   (if (setq ss (ssget '((0 . "*text"))))
  3.     (progn
  4.       (setq strl (mapcar '(lambda (x / pt str e a)
  5.                             (setq pt  (xdrx_getpropertyvalue x "Position")
  6.                                   str (xdrx_getpropertyvalue x "Textstring")
  7.                             )
  8.                             (if        (setq e (xdrx_geom_bpoly pt))
  9.                               (progn
  10.                                 (setq a (car (xdrx_getarea e)))
  11.                                 (xdrx_entity_delete e)
  12.                                 (list str a)
  13.                               )
  14.                             )
  15.                           )
  16.                          (xdrx_pickset->ents ss)
  17.                  )
  18.             strl (XD::List:GroupByIndex strl 0)
  19.             strl (mapcar '(lambda (x)
  20.                             (strcat (car x)
  21.                                     " "
  22.                                     (rtos (cadr x) 2 3)
  23.                                     " "
  24.                                     (itoa (length (cdr x)))
  25.                             )
  26.                           )
  27.                          strl
  28.                  )
  29.             strl (cons "型号 面积 数量" strl)
  30.       )
  31.       (XD::List:Tofile "d:\\area.csv" strl);_文件名自己修改
  32.     )
  33.   )
  34.   (princ)
  35. )

点评

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

使用道具 举报

 楼主| 发表于 2013-12-16 17:45:07 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 02:23 , Processed in 0.190227 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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