Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
ph168xd

Cộng cốt cao độ thêm 1 khoảng?

Các bài được khuyến nghị

ph168xd    310

Đang sử dụng acv. Để dồn kt bản vẽ.

Và mình nghĩ là nó có thể áp dụng đc cho cốt cao độ

Nhưng làm hoài không đc.

Anh em có cách nào hoạc có lish nào tương tự giúp mình với.

VD

muốn tăng cốt cao độ thêm +300. vào các cốt cao độ hiện có.

Thks everybody

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
quocanhxd05    6
Đang sử dụng acv. Để dồn kt bản vẽ.

Và mình nghĩ là nó có thể áp dụng đc cho cốt cao độ

Nhưng làm hoài không đc.

Anh em có cách nào hoạc có lish nào tương tự giúp mình với.

VD

muốn tăng cốt cao độ thêm +300. vào các cốt cao độ hiện có.

Thks everybody

mình có file lisp này. có thể sẽ giúp bạn được.Bởi vì còn tùy thuộc text của bạn ntn.

http://www.cadviet.com/upfiles/Math_text_MATH.zip

Muốn chắc ăn thì bạn up file lên đi mình xem cho.

Cách sử dụng như sau:

Bạn đánh lệnh MATH enter

rồi nhập tiếp +300 enter (nhớ đánh thêm dấu cộng)

sau đó chọn các text rồi enter thế là xong.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
nataca    553
Không làm đc điều đó với Block đâu Pro ạh...Thôi thanks

Làm được chứ ^_^ . Nhưng mà phải cho biết Block cao độ là như thế nào (bởi vì block đó đâu phải chỉ là text không). Anh Phong up block đó lên thì mới bít mà viết lisp chứ (rưng mà nếu lisp viết ra chỉ có tác dụng đối với loại block đó thôi)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ph168xd    310
Làm được chứ ^_^ . Nhưng mà phải cho biết Block cao độ là như thế nào (bởi vì block đó đâu phải chỉ là text không). Anh Phong up block đó lên thì mới bít mà viết lisp chứ (rưng mà nếu lisp viết ra chỉ có tác dụng đối với loại block đó thôi)

 

Mình sử dụng Block thuộc tính. Gồm 1 att và 1 ký hiệu cốt.

Nataca xem ở đây xem có giúp đc ko

http://www.cadviet.com/upfiles/Drawing1_26.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nộ Thiên    133
Mình sử dụng Block thuộc tính. Gồm 1 att và 1 ký hiệu cốt.

Nataca xem ở đây xem có giúp đc ko

http://www.cadviet.com/upfiles/Drawing1_26.dwg

Lúc trước có post cho MHXDA đoạn code này, dùng để tính toán 1 vài phép tính đơn giản cho Block-ATT.

Post ở đâu thì quên mất, nay post lại.

Bạn phải chỉnh chút xiú code để có thể dùng cho yêu cầu của mình.

Chú ý phần tên của Block-ATT (màu đỏ) và các đoạn code liên quan đến text

 

(defun c:tinh2 ()

(setvar "cmdecho" 0)

(setq om (getvar "osmode"))

(prompt "\nSelect Object:")

(setvar "osmode" 0)

(setq ssObj (ssget '((0 . "INSERT") (2 . "point")) ))

(initget "N T B H")

(setq kw1 (getkword "\nTinh gia tri [Nhan,Tong,trung Binh,<Hieu chinh>]?<N/T/B/H>:"))

(if (= kw1 nil) (setq kw1 "H"))

(setq kw1 (strcase kw1))

(cond ((= kw1 "N") (progn

(setq i 0)

(setq kq 1)

(while (setq madt (ssname ssObj i))

(setq kq (* (atof (cdr (assoc 1 (entget (entnext madt))))) kq))

(setq i (1+ i))

)

(prompt (strcat "\nTich cua cac so la:" (rtos kq 2 2)))

(setq p0 (getpoint "\nSelect a Point or Text:"))

(if (ssget p0)

(if (= (cdr (assoc 0 (entget (car (nentselp p0))))) "TEXT")

(progn (setq dtchon (nentselp p0))

(setq madtchon (car dtchon))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

)

)

(command ".text" "st" "2mm" "j" "mc" p0 0 (rtos kq 2 2))

)

))

 

((= kw1 "T") (progn

(setq i 0)

(setq kq 0)

(while (setq madt (ssname ssObj i))

(setq kq (+ (atof (cdr (assoc 1 (entget (entnext madt))))) kq))

(setq i (1+ i))

)

(prompt (strcat "\nTong cua cac so la:" (rtos kq 2 2)))

(setq p0 (getpoint "\nSelect a Point or Text:"))

(if (ssget p0)

(if (= (cdr (assoc 0 (entget (car (nentselp p0))))) "TEXT")

(progn (setq dtchon (nentselp p0))

(setq madtchon (car dtchon))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

))

(command ".text" "st" "2mm" "j" "mc" p0 0 (rtos kq 2 2))

)

))

((= kw1 "B") (progn

(setq i 0)

(setq kq 0)

(while (setq madt (ssname ssObj i))

(setq kq (+ (atof (cdr (assoc 1 (entget (entnext madt))))) kq))

(setq i (1+ i))

)

(setq kq (/ kq (sslength ssObj)))

(prompt (strcat "\nTrung binh cua cac so la:" (rtos kq 2 2)))

(setq p0 (getpoint "\nSelect a Point or Text:"))

(if (ssget p0)

(if (= (cdr (assoc 0 (entget (car (nentselp p0))))) "TEXT")

(progn (setq dtchon (nentselp p0))

(setq madtchon (car dtchon))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

))

(command ".text" "st" "2mm" "j" "mc" p0 0 (rtos kq 2 2))

)

))

((= kw1 "H") (progn

(initget "C N I")

(setq kw2 (getkword "\nChon [<Cong>,Nhan,Chia] voi 1 so ?<C/N/I>:"))

(if (= kw2 nil) (setq kw2 "C"))

(setq kw2 (strcase kw2))

(cond

((= kw2 "C") (progn

(setq so (getreal "\nNhap gia tri can cong (hoac tru) :"))

(setq i 0)

(while (setq madt (ssname ssObj i))

(setq madtchon (entnext madt))

(setq kq (+ (atof (cdr (assoc 1 (entget madtchon)))) so))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

(setq i (1+ i))

)

(prompt (strcat "\nDa cap nhat " (itoa i) " doi tuong."))

))

((= kw2 "N") (progn

(setq so (getreal "\nNhap gia tri can nhan them:"))

(setq i 0)

(while (setq madt (ssname ssObj i))

(setq madtchon (entnext madt))

(setq kq (* (atof (cdr (assoc 1 (entget madtchon)))) so))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

(setq i (1+ i))

)

(prompt (strcat "\nDa cap nhat " (itoa i) " doi tuong."))

))

((= kw2 "I") (progn

(setq so (getreal "\nNhap gia tri can chia bot:"))

(setq i 0)

(while (setq madt (ssname ssObj i))

(setq madtchon (entnext madt))

(setq kq (/ (atof (cdr (assoc 1 (entget madtchon)))) so))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

(setq i (1+ i))

)

(prompt (strcat "\nDa cap nhat " (itoa i) " doi tuong."))

))

)

 

))

 

)

(setvar "osmode" om)

(setvar "cmdecho" 1)

(princ)

)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
nataca    553

Không hiểu sao mãi mà không up file lên diễn đàn được. Đành qua dùng trang upload free vậy. Bác dùng thử cái này xem đã đạt yêu cầu của bác chưa nhé . Lệnh là CCD ( change cao độ ) .http://www.mediafire.com/?ikzr0cmzzmm

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
nataca    553
Lúc trước có post cho MHXDA đoạn code này, dùng để tính toán 1 vài phép tính đơn giản cho Block-ATT.

Post ở đâu thì quên mất, nay post lại.

Bạn phải chỉnh chút xiú code để có thể dùng cho yêu cầu của mình.

Chú ý phần tên của Block-ATT (màu đỏ) và các đoạn code liên quan đến text

 

(defun c:tinh2 ()

(setvar "cmdecho" 0)

(setq om (getvar "osmode"))

(prompt "\nSelect Object:")

(setvar "osmode" 0)

(setq ssObj (ssget '((0 . "INSERT") (2 . "point")) ))

(initget "N T B H")

(setq kw1 (getkword "\nTinh gia tri [Nhan,Tong,trung Binh,<Hieu chinh>]?<N/T/B/H>:"))

(if (= kw1 nil) (setq kw1 "H"))

(setq kw1 (strcase kw1))

(cond ((= kw1 "N") (progn

(setq i 0)

(setq kq 1)

(while (setq madt (ssname ssObj i))

(setq kq (* (atof (cdr (assoc 1 (entget (entnext madt))))) kq))

(setq i (1+ i))

)

(prompt (strcat "\nTich cua cac so la:" (rtos kq 2 2)))

(setq p0 (getpoint "\nSelect a Point or Text:"))

(if (ssget p0)

(if (= (cdr (assoc 0 (entget (car (nentselp p0))))) "TEXT")

(progn (setq dtchon (nentselp p0))

(setq madtchon (car dtchon))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

)

)

(command ".text" "st" "2mm" "j" "mc" p0 0 (rtos kq 2 2))

)

))

 

((= kw1 "T") (progn

(setq i 0)

(setq kq 0)

(while (setq madt (ssname ssObj i))

(setq kq (+ (atof (cdr (assoc 1 (entget (entnext madt))))) kq))

(setq i (1+ i))

)

(prompt (strcat "\nTong cua cac so la:" (rtos kq 2 2)))

(setq p0 (getpoint "\nSelect a Point or Text:"))

(if (ssget p0)

(if (= (cdr (assoc 0 (entget (car (nentselp p0))))) "TEXT")

(progn (setq dtchon (nentselp p0))

(setq madtchon (car dtchon))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

))

(command ".text" "st" "2mm" "j" "mc" p0 0 (rtos kq 2 2))

)

))

((= kw1 "B") (progn

(setq i 0)

(setq kq 0)

(while (setq madt (ssname ssObj i))

(setq kq (+ (atof (cdr (assoc 1 (entget (entnext madt))))) kq))

(setq i (1+ i))

)

(setq kq (/ kq (sslength ssObj)))

(prompt (strcat "\nTrung binh cua cac so la:" (rtos kq 2 2)))

(setq p0 (getpoint "\nSelect a Point or Text:"))

(if (ssget p0)

(if (= (cdr (assoc 0 (entget (car (nentselp p0))))) "TEXT")

(progn (setq dtchon (nentselp p0))

(setq madtchon (car dtchon))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

))

(command ".text" "st" "2mm" "j" "mc" p0 0 (rtos kq 2 2))

)

))

((= kw1 "H") (progn

(initget "C N I")

(setq kw2 (getkword "\nChon [<Cong>,Nhan,Chia] voi 1 so ?<C/N/I>:"))

(if (= kw2 nil) (setq kw2 "C"))

(setq kw2 (strcase kw2))

(cond

((= kw2 "C") (progn

(setq so (getreal "\nNhap gia tri can cong (hoac tru) :"))

(setq i 0)

(while (setq madt (ssname ssObj i))

(setq madtchon (entnext madt))

(setq kq (+ (atof (cdr (assoc 1 (entget madtchon)))) so))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

(setq i (1+ i))

)

(prompt (strcat "\nDa cap nhat " (itoa i) " doi tuong."))

))

((= kw2 "N") (progn

(setq so (getreal "\nNhap gia tri can nhan them:"))

(setq i 0)

(while (setq madt (ssname ssObj i))

(setq madtchon (entnext madt))

(setq kq (* (atof (cdr (assoc 1 (entget madtchon)))) so))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

(setq i (1+ i))

)

(prompt (strcat "\nDa cap nhat " (itoa i) " doi tuong."))

))

((= kw2 "I") (progn

(setq so (getreal "\nNhap gia tri can chia bot:"))

(setq i 0)

(while (setq madt (ssname ssObj i))

(setq madtchon (entnext madt))

(setq kq (/ (atof (cdr (assoc 1 (entget madtchon)))) so))

(setq dsdtchon (entget madtchon))

(setq dsdtchon (subst (cons '1 (rtos kq 2 2)) (assoc 1 dsdtchon) dsdtchon))

(entmod dsdtchon)

(entupd madtchon)

(setq i (1+ i))

)

(prompt (strcat "\nDa cap nhat " (itoa i) " doi tuong."))

))

)

 

))

 

)

(setvar "osmode" om)

(setvar "cmdecho" 1)

(princ)

)

Cách này của bác không dùng được đâu. Nó cũng phức tạp nữa. Dùng vla-getattributes nhanh hơn nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ph168xd    310
Cách này của bác không dùng được đâu. Nó cũng phức tạp nữa. Dùng vla-getattributes nhanh hơn nhiều.

 

Vậy bạn hướng dẫn cách làm đi

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
nataca    553
Vậy bạn hướng dẫn cách làm đi

Ý bác là code của lisp này chứ gì.

(defun C:CCD (/ ss socongthem dem kq gt Lst ename Vlob att) 

 	(vl-load-com)
(setq	     ss			   (C_BL "\n Chon tap hop block can thay doi cao do :")
		socongthem	(getreal "\n Chon so can cong them")
		Lst 		     (SS2LST ss)
		dem 	          0
		kq		    0
)
(repeat (length Lst)
	(setq	     ename	(nth dem Lst)
  			Vlob	(vlax-ename->vla-object ename)
			att 	(variant-value (vla-getattributes Vlob))
	)
  	(foreach x (safearray-value att)
		(setq 	gt		(atof (vla-get-textstring x))
				kq		(SO2CHUINT (+ gt socongthem))
		)
  	)
  	(foreach y (safearray-value att)
  		(vla-put-textstring y kq)
  	)
	(setq dem (1+ dem))
)
)

;------------------------------------------
;;; CHON BLOCK KEM DONG NHAC (BAT BUOC CHON)
(defun C_BL (dongnhac / ss)
(while 	(and	(not (prompt dongnhac))
 						(not (setq ss	(ssget 
								'((-4 . "<OR") (0 . "INSERT")(-4 . "OR>"))
							)
					  )
			  		)
	)
)
ss
)
(defun SS2LST (ss / sodt index lstent)
(setq
	sodt (if ss (sslength ss) 0)
	index 0
)
(repeat sodt
	(setq 	ent 	(ssname ss index)
			index 	(1+ index)
			lstent 	(cons ent lstent)
	)
)
(reverse lstent)
)
(defun SO2CHUINT (num / numR)
  	(cond 	(	(= (type (read (rtos num 2 2))) 'INT)
		 	(setq numR ( strcat (rtos num 2 0) ".00"))
	 	)
		(	(= (type (read (rtos (* num 10) 2 1))) 'INT)
		 	(setq numR ( strcat (rtos num 2 1) "0"))
	 	)
		(	t
		 	(setq numR (rtos num 2 2))
	 	)
)

(if (> num 0)
	(strcat "+" numR)
	numR
)

)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ph168xd    310

Ặc. ph đâu có biết viết lish, sau đọt này có lẽ phải theo học các Bác mới đc

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×