19.04.2017 12:14    

nzrkcygt13
merhaba aşağıdaki lispi yükledim denedim ancak bir kaç noktada yardıma ihtiyacım var.

sanırım bu lisp sadece revizyon olmuş katıları baz alıyor. Ben çizimde yer alan tüm katıların ebatlarını vermesini istiyorum. Bir de tabloya katı isimlerini vermiş olduğum layer isimlerine göre isim sütunu ve isim sütununa göre adet ekleyebilir miyiz. Şimdiden teşekkürler



;Counting boxes as 3dsolids
;- objects must be 3dsolid, in form of a box
;- the 3dsolids can be created using:
; - BOX command
; - Sweep or Extrude rectangles on a STRAIGHT path
; - Boolean operations, resulting a box
; Stefan M. - 24.11.2015
(defun c:boxcount ( / ss i a o l)
(if
(setq ss (ssget '((0 . "3DSOLID"))))
(progn
(repeat (setq i (sslength ss))
(if
(setq a (rec_geom (ssname ss (setq i (1- i)))))
(if
(setq o (vl-some
'(lambda (x)
(if
(and
(equal (car a) (car x) 1e-5)
(equal (cadr a) (cadr x) 1e-5)
)
x)
)
l
)
)
(setq l (subst (list (car a) (cadr a) (+ (caddr o) (caddr a))) o l))
(setq l (cons a l))
)
)
)

(if
(setq l (vl-sort
l
'(lambda (a b)
(if
(equal (car a) (car b) 1e-5)
(if
(equal (cadr a) (cadr b) 1e-5)
(< (caddr a) (caddr b))
(< (cadr a) (cadr b))
)
(< (car a) (car b))
)
)
)
)
(ins_table_boxescounting l)
)
)
)
(princ)
)

(defun rec_geom (e / v m a b c)
(setq e (vlax-ename->vla-object e)
v (vlax-get e 'Volume)
m (vlax-get e 'PrincipalMoments)
a (sqrt (/ (* 6.0 (+ (car m) (cadr m) (- (caddr m)))) v))
b (sqrt (/ (* 6.0 (+ (cadr m) (caddr m) (- (car m)))) v))
c (sqrt (/ (* 6.0 (+ (caddr m) (car m) (- (cadr m)))) v))
)
(if (equal (* a b c) v 1e-5) (vl-sort (list a b c) '<))
)

(defun ins_table_boxescounting (l / acobj acdoc space ht o tab i row col)
(setq acObj (vlax-get-acad-object)
acDoc (vla-get-activedocument acObj)
space (vlax-get acDoc (if (= 1 (getvar 'cvport)) 'PaperSpace 'ModelSpace))
ht (/ 2.2 (cond ((getvar 'cannoscalevalue)) (1.0)))
)
(if
(setq o (getpoint "\nSpecify table insertion point: "))
(progn
(setq tab (vla-addtable space (vlax-3d-point (trans o 1 0)) (+ 2 (length l)) 3 (* 2.5 ht) ht))
(vlax-put tab 'direction (trans '(1 0 0) 1 0 T))

(mapcar
(function
(lambda (rowType)
(vla-SetTextStyle tab rowType (getvar 'textstyle))
(vla-SetTextHeight tab rowType ht)
)
)
'(2 4 1)
)

(vla-put-HorzCellMargin tab (* 0.14 ht))
(vla-put-VertCellMargin tab (* 0.14 ht))

(setq l (cons (list "Width" "Height" "Length") l))

(setq i 0)
(foreach col (apply 'mapcar (cons 'list l))
(vla-SetColumnWidth tab i
(apply 'max
(mapcar
'(lambda (x)
((lambda (txb) (+ (abs (- (caadr txb) (caar txb))) (* 2.0 ht)))
(textbox
(list
(cons 1 (vl-princ-to-string x))
(cons 7 (getvar 'textstyle))
(cons 40 ht)
)
)
)
)
col
)
)
)
(setq i (1+ i))
)
(setq l (cons '("BOXES COUNTING") l))

(setq row 0)
(foreach r l
(setq col 0)
(vla-SetRowHeight tab row (* 1.5 ht))
(foreach c r
(vla-SetText tab row col (vl-princ-to-string c))
(setq col (1+ col))
)
(setq row (1+ row))
)
)
)
)
(princ "\n***** Type BOXCOUNT to start ******")

02.02.2020 18:31    

sysf1453
selamın aleykum kardes bu lısp çözdünmü tam benim aradıgım özelik bende yükledim ama box nesneleri almıyor bilginize ihtiyacım var lütfen

19.04.2020 23:47    

sysf1453
Bu lisp düzeltebilirmisiniz lütfen yardım 3d solid parçaların ebat ölçülerini yazmasını istiyorum lisp hata veriyor

> 1 <
Copyright © 2004-2022 SQL: 1.079 saniye - Sorgu: 50 - Ortalama: 0.02157 saniye