AutoLISP计算多段线数量,并按线型排序求和
创始人
2024-09-23 07:31:45
0

下面是代码示例,可以实现上述功能。

(defun c:countPolyline (/ ss objects data result)
  (setq ss (ssget "X" '((0 . "LWPOLYLINE"))))
  (if ss
    (progn
      (setq objects (vl-remove-if-not 'vla-get-Linetype
                                      (mapcar 'vlax-ename->vla-object
                                              (vl-remove-if-not 'listp
                                                               (mapcar 'cadr
                                                                       (ssnamex ss))))))      
      (setq data (mapcar (lambda (x)
                            (list (vla-get-Linetype x)
                                  (vlax-curve-Stats (vlax-ename->vla-object (vla-get-Entity x)))))
                          objects))
      (setq result
            (sort (apply 'append
                         (mapcar (lambda (x)
                                   (list (car x) (apply '+ (mapcar 'cadr x)))))
                                 (mapcar (lambda (x)
                                           (remove-duplicates (mapcar 'car x)
                                                              :test 'string-equal)))
                                         (mapcar 'cdr
                                                 (group-objects-by 'car data)))
                                 )
                  (lambda (x y) (string< (car x) (car y))))))
    (princ "\n没有找到多段线")
  )
  (if result
    (progn
      (princ "\n多段线按线型求和:")
      (foreach item result
        (princ (strcat "\n线型:" (car item) "  数量:" (rtos (cadr item) 2 0))))
    )
    (princ "\n没有找到多段线")
  )
  (princ)
)

(defun group-objects-by (field list / hash)
  (setq hash (mapcar (lambda (x) (list (funcall field x) x)) list))
  (mapcar (lambda (k) (mapcar 'cdr (vl-remove-if-not (lambda (x) (equal k (car x))) hash))) 
          (remove-duplicates (mapcar 'car hash) :test 'equal)))

该代码包含了 c:countPolyline 函数和 group-objects-by 函数。 c:countPolyline 函数通过选择多段线实体并计算他们的数量并按线型排序进行求和。 group-objects-by 函数用于将对象分组并按字段进行排序。

运行该函数会返回多段线数量总和以及每个线型的数量。

相关内容

热门资讯

iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
安卓系统怎么连不上carlif... 安卓系统无法连接CarLife的原因及解决方法随着智能手机的普及,CarLife这一车载互联功能为驾...
oppo手机安卓系统换成苹果系... OPPO手机安卓系统换成苹果系统:现实吗?如何操作?随着智能手机市场的不断发展,用户对于手机系统的需...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...
安卓平板改windows 系统... 你有没有想过,你的安卓平板电脑是不是也能变身成Windows系统的超级英雄呢?想象在同一个设备上,你...
安卓系统上滑按键,便捷生活与高... 你有没有发现,现在手机屏幕越来越大,操作起来却越来越方便了呢?这都得归功于安卓系统上的那些神奇的上滑...
安卓系统连接耳机模式,蓝牙、有... 亲爱的手机控们,你们有没有遇到过这种情况:手机突然变成了“耳机模式”,明明耳机没插,声音却只从耳机孔...
希沃系统怎么装安卓系统,解锁更... 亲爱的读者们,你是否也像我一样,对希沃一体机上的安卓系统充满了好奇呢?想象在教室里,你的希沃一体机不...
安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...