Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Viết Lisp theo yêu cầu

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

Sau đây là những bổ sung của em:

1. Cần xác định tọa độ tâm của nhiều đường tròn trong 1 bản vẽ, các đường tròn này có bán kính khác nhau. Giá trị của tâm đường tròn sẽ ghi vào ở vị trí cách tâm mỗi đường tròn 1 giá trị X, Y. Chiều cao chữ để ghi textheight= h, giá trị X= Y = 0.5h. Giá trị h do người dùng tự nhập vào. Các giá trị tâm đường tròn sẽ ghi dạng "x=....; y= ...."

2. Dạng ghi kích thước của em là 3000/2=1500. Lệnh này có 2 hình thức là ghi bình thường, và convert những kích thước lỡ đã bị ghi rồi.

 

Vì công việc nên em rất cần những cái này, bác gắng giúp em với nhé. Cám ơn bác SSG nhiều

Tại sao bạn không giúp người trợ giúp nhanh chóng hiểu ra bạn muốn gì. Trăm nghe không bằng một thấy, nếu bạn upload 1 file mẫu trong đó có phần bản vẽ trước khi đánh dim, và phần khác là bản vẽ sau khi đánh dim. Mọi việc sẽ rõ như ban ngày, người viết lisp giúp bạn sẽ giảm thiểu công sức mà mã lisp lại đúng như ý của bạn.

 

Bạn thử đọc và làm theo như các yêu cầu của bác Vbao, tôi thấy đó là chuẩn mực trong việc diễn giải cho người trợ giúp hiểu mình muốn gì. Như thế đỡ tốn công của bạn và cũng đỡ tốn công của người trợ giúp, làm 1 phát ăn ngay, sản phẩm lisp lại như ý.

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
Sau đây là những bổ sung của em:

1. Cần xác định tọa độ tâm của nhiều đường tròn trong 1 bản vẽ, các đường tròn này có bán kính khác nhau. Giá trị của tâm đường tròn sẽ ghi vào ở vị trí cách tâm mỗi đường tròn 1 giá trị X, Y. Chiều cao chữ để ghi textheight= h, giá trị X= Y = 0.5h. Giá trị h do người dùng tự nhập vào. Các giá trị tâm đường tròn sẽ ghi dạng "x=....; y= ...."

2. Dạng ghi kích thước của em là 3000/2=1500. Lệnh này có 2 hình thức là ghi bình thường, và convert những kích thước lỡ đã bị ghi rồi.

 

Vì công việc nên em rất cần những cái này, bác gắng giúp em với nhé. Cám ơn bác SSG nhiều

Mình hiểu rồi, nhưng bạn cũng nên rút kinh nghiệm theo như anh Hoành đã nói trên.

Có 1 điều báo trước: khi đã áp đặt vị trí ghi text (một cách máy móc), có thể có những text sẽ cán qua nét vẽ của đường tròn hoặc những đường nét khác có sẵn trên bản vẽ. Các trường hợp này bạn phải tự xử lý lấy.

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

Chương trình ghi tọa độ tâm đường tròn và ghi kích thước kiểu xxxx/2 = yyy:

 

;;;-------------------------------------------------------------------------------
(defun wtxthp (txt h p / sty d h) ;;;Write txt with 3 parameters
(setq
   sty (getvar "textstyle")
   d (tblsearch "style" sty)
)
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p)
                              (if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)
;;;-------------------------------------------------------------------------------
(defun cc1(e dx dy / d p x y pt) ;;;Coordinate of 1 Circle
(setq
   d (entget e)
   p (trans (cdr (assoc 10 d)) 0 1)
   x (car p) y (cadr p)
   pt (trans (list (+ x dx) (+ y dy)) 1 0)
)
(wtxthp (strcat "x=" (rtos x) "; y=" (rtos y)) h pt)
)
;;;-------------------------------------------------------------------------------
(defun C:CC() ;;;Coordinate of Circles
(if (null h0) (setq h0 2.5))
(setq
   ss (ssget '((0 . "CIRCLE")))
   h (getreal (strcat "\nText height <" (rtos h0) ">:"))
   oldos (getvar "osmode")
)
(if (null h) (setq h h0) (setq h0 h))
(setvar "osmode" 0)
(while (setq e (ssname ss 0))
   (cc1 e (/ h 2) (/ h 2))
   (ssdel e ss)
)
(setvar "osmode" oldos)
(princ)
)
;;;-------------------------------------------------------------------------------
(defun C:DD( / ss e d v oldtxt newtxt d2) ;;;convert Dimensions to Divided format
(setq ss (ssget '((0 . "DIMENSION"))))
(while (setq e (ssname ss 0))
   (setq
       d (entget e)
       v (cdr (assoc 42 d))
       oldtxt (assoc 1 d)
       newtxt (cons 1 (strcat (rtos (* v 2)) "/2=<>"))
       d2 (subst newtxt oldtxt d)
   )
   (entmod d2)
   (ssdel e ss)
)
(princ)
)
;;;-------------------------------------------------------------------------------
(defun C:XDD(/ p1 p2 x txt) ;;;make X Dimension by Divided format
(setq
   p1 (getpoint "\nFirst point:")
   p2 (getpoint p1 "\nSecond point:")
   x (abs (- (car p1) (car p2)))
   txt (strcat (rtos (* x 2)) "/2=<>")
)
(command "dimlinear" p1 p2 "h" "m" txt pause)
)
;;;-------------------------------------------------------------------------------
(defun C:YDD(/ p1 p2 y txt) ;;;make Y Dimension by Divided format
(setq
   p1 (getpoint "\nFirst point:")
   p2 (getpoint p1 "\nSecond point:")
   y (abs (- (cadr p1) (cadr p2)))
   txt (strcat (rtos (* y 2)) "/2=<>")
)
(command "dimlinear" p1 p2 "v" "m" txt pause)
)
;;;-------------------------------------------------------------------------------

 

Có 4 lệnh:

CC, Coordinate of Circles

DD, convert Dimensions to Divided format.

XDD, make X Dimension by Divided format

YDD, make Y Dimension by Divided format

 

Chú ý:

Lệnh convert DD áp dụng cho mọi đối tượng dimension nhưng các lệnh make chỉ áp dụng cho dimlinear và buộc phải chia thành 2 lệnh XDD và YDD. Lý do: dù có xử lý gì đi nữa, cuối cùng chương trình vẫn phải gọi lệnh dimlinear. Sau khi pick 2 điểm, người dùng có thể tùy ý chọn dim theo phương ngang hoặc thẳng đứng, cái đó nằm ngoài tầm kiểm soát của chương trình nên phải quy định rõ ràng ngay từ đầu! Đã làm đầy đủ theo ý bạn, nhưng theo quan điểm của mình, bạn cứ đánh dim bình thường, sau đó dùng DD cho tất cả các dim muốn convert. Chỉ 1 lần là OK ngay.

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
Bạn có thể post yêu cầu về autolisp ở topic này.

Nhờ bác viết giúp lisp chuyển tất cả các đối tượng trong bản vẽ có cao độ z khác 0 về z=0.Cám ơn bác 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
Nhờ bác viết giúp lisp chuyển tất cả các đối tượng trong bản vẽ có cao độ z khác 0 về z=0.Cám ơn bác nhiều!

 

http://www.cadviet.com/sub/hdownload.php?id=lisp&p=4

  • Vote tăng 1

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
Chương trình ghi tọa độ tâm đường tròn và ghi kích thước kiểu xxxx/2 = yyy:

 

;;;-------------------------------------------------------------------------------
(defun wtxthp (txt h p / sty d h) ;;;Write txt with 3 parameters
(setq
   sty (getvar "textstyle")
   d (tblsearch "style" sty)
)
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p)
                              (if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)
;;;-------------------------------------------------------------------------------
(defun cc1(e dx dy / d p x y pt) ;;;Coordinate of 1 Circle
(setq
   d (entget e)
   p (trans (cdr (assoc 10 d)) 0 1)
   x (car p) y (cadr p)
   pt (trans (list (+ x dx) (+ y dy)) 1 0)
)
(wtxthp (strcat "x=" (rtos x) "; y=" (rtos y)) h pt)
)
;;;-------------------------------------------------------------------------------
(defun C:CC() ;;;Coordinate of Circles
(if (null h0) (setq h0 2.5))
(setq
   ss (ssget '((0 . "CIRCLE")))
   h (getreal (strcat "\nText height <" (rtos h0) ">:"))
   oldos (getvar "osmode")
)
(if (null h) (setq h h0) (setq h0 h))
(setvar "osmode" 0)
(while (setq e (ssname ss 0))
   (cc1 e (/ h 2) (/ h 2))
   (ssdel e ss)
)
(setvar "osmode" oldos)
(princ)
)
;;;-------------------------------------------------------------------------------
(defun C:DD( / ss e d v oldtxt newtxt d2) ;;;convert Dimensions to Divided format
(setq ss (ssget '((0 . "DIMENSION"))))
(while (setq e (ssname ss 0))
   (setq
       d (entget e)
       v (cdr (assoc 42 d))
       oldtxt (assoc 1 d)
       newtxt (cons 1 (strcat (rtos (* v 2)) "/2=<>"))
       d2 (subst newtxt oldtxt d)
   )
   (entmod d2)
   (ssdel e ss)
)
(princ)
)
;;;-------------------------------------------------------------------------------
(defun C:XDD(/ p1 p2 x txt) ;;;make X Dimension by Divided format
(setq
   p1 (getpoint "\nFirst point:")
   p2 (getpoint p1 "\nSecond point:")
   x (abs (- (car p1) (car p2)))
   txt (strcat (rtos (* x 2)) "/2=<>")
)
(command "dimlinear" p1 p2 "h" "m" txt pause)
)
;;;-------------------------------------------------------------------------------
(defun C:YDD(/ p1 p2 y txt) ;;;make Y Dimension by Divided format
(setq
   p1 (getpoint "\nFirst point:")
   p2 (getpoint p1 "\nSecond point:")
   y (abs (- (cadr p1) (cadr p2)))
   txt (strcat (rtos (* y 2)) "/2=<>")
)
(command "dimlinear" p1 p2 "v" "m" txt pause)
)
;;;-------------------------------------------------------------------------------

 

Có 4 lệnh:

CC, Coordinate of Circles

DD, convert Dimensions to Divided format.

XDD, make X Dimension by Divided format

YDD, make Y Dimension by Divided format

 

Chú ý:

Lệnh convert DD áp dụng cho mọi đối tượng dimension nhưng các lệnh make chỉ áp dụng cho dimlinear và buộc phải chia thành 2 lệnh XDD và YDD. Lý do: dù có xử lý gì đi nữa, cuối cùng chương trình vẫn phải gọi lệnh dimlinear. Sau khi pick 2 điểm, người dùng có thể tùy ý chọn dim theo phương ngang hoặc thẳng đứng, cái đó nằm ngoài tầm kiểm soát của chương trình nên phải quy định rõ ràng ngay từ đầu! Đã làm đầy đủ theo ý bạn, nhưng theo quan điểm của mình, bạn cứ đánh dim bình thường, sau đó dùng DD cho tất cả các dim muốn convert. Chỉ 1 lần là OK ngay.

 

Đã đúng ý của em rồi, lần sau em sẽ rút kinh nghiệm khi gửi bài yêu cầu lên diễn đàn. Em chân thành cám ơn bác SSG nhé.

 

Nhân tiện cho em hỏi: Ở phiên bản AutoCad R14 có lệnh "ctrl + a" là lệnh Group on/off. Vậy ở phiên bản AutoCad 2007 nó là lệnh gì vậy các bá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
Đã đúng ý của em rồi, lần sau em sẽ rút kinh nghiệm khi gửi bài yêu cầu lên diễn đàn. Em chân thành cám ơn bác SSG nhé.

 

Nhân tiện cho em hỏi: Ở phiên bản AutoCad R14 có lệnh "ctrl + a" là lệnh Group on/off. Vậy ở phiên bản AutoCad 2007 nó là lệnh gì vậy các bác

 

 

Hinh nhu la : Ctrl+H :)

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
Hinh nhu la : Ctrl+H :)

 

 

Ở phiên bản AutoCad R14 có lệnh "ctrl + a" là lệnh Group on/off. Vậy ở phiên bản AutoCad 2007 nó là lệnh gì vậy các bác

Bác KTS.ngocquan nói là Ctrl+ H, nhưng em đã thử mà không đượ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

(defun c:CInVis	(/ SSet Count Elem)
 (defun Dxf (Id Obj)
   (cdr (assoc Id (entget Obj)))
 )					;end Dxf
 (cond
   ((setq SSet
    (ssget
      "X"
      (filterchondttheomau
	(maucuadoituong
	  (car (entsel "\nHay pick vao doi tuong de chon mau: ")
	  )
	)
      )
    )
    )
    (repeat (setq Count (sslength SSet))
      (setq Count (1- COunt)
     Elem  (ssname SSet Count)
      )
      (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod
     (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem))
   )
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt
   "\nEntity on a locked layer. Cannot hide this entity. "
 )
      )				;end if
    )					;end repeat
   )
 )					;end cond
 (princ)
)					;end c:InVis
(defun maucuadoituong (ent)
 (setq	tt   (entget ent)
chon (assoc 62 tt)
 )
 (cond
   (chon (cdr chon))
   (t (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 tt))))))
 )
)
(defun filterchondttheomau (mau)
 (defun chonlayertheomau (mau / kq)
   (setq curlay (tblnext "LAYER" t))
   (while curlay
     (if (= mau (cdr (assoc 62 curlay)))
(setq kq (append kq (list (cdr (assoc 2 curlay)))))
     )
     (setq curlay (tblnext "LAYER"))
   )
   kq
 )
 (setq	filterlist
	   nil
taplayer   (chonlayertheomau mau)
 )
 (foreach pp taplayer
   (setq filterlist
   (append filterlist
	   (list (cons -4 "<AND")
		 (cons 62 256)
		 (cons 8 pp)
		 (cons -4 "AND>")
	   )
   )
   )
 )
 (setq	filterlist
 (append (list (cons -4 "<OR") (cons 62 mau))
	 filterlist
	 (list (cons -4 "OR>"))
 )
 )

Đây là lisp Cinvis đã có trên diễn đàn, em đang cần 1 lisp tương tự nhưng ngược 1 chút có nghĩa là khi chọn đối tượng chứa 1 màu thì các đối tượng có màu giống màu đối tượng chọn được giữ lại còn các đối tương khác thì ẩn đi. Mong các anh giúp em, thanks!!

  • Vote tăng 1

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

Đây là lệnh CNInvis theo đúng ý bạn. Chỉ việc thêm vài dòng code so với trước. Màu đỏ là mã tôi vừa thêm.

(defun c:C[color="#FF0000"]N[/color]InVis	(/ SSet Count Elem)
 (defun Dxf (Id Obj)
   (cdr (assoc Id (entget Obj)))
 )					;end Dxf
 (cond
   ((setq SSet
    (ssget
      "X"
      [color="#FF0000"](append
	(list (cons -4 "	      (filterchondttheomau
	(maucuadoituong
	  (car (entsel "\nHay pick vao doi tuong de chon mau: ")
	  )
	)
      )
	[color="#FF0000"](list (cons -4 "NOT>")))[/color]
    )
    )
    ssadd
    (repeat (setq Count (sslength SSet))
      (setq Count (1- COunt)
     Elem  (ssname SSet Count)
      )
      (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod
     (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem))
   )
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt
   "\nEntity on a locked layer. Cannot hide this entity. "
 )
      )				;end if
    )					;end repeat
   )
 )					;end cond
 (princ)
)					;end c:InVis
(defun maucuadoituong (ent)
 (setq	tt   (entget ent)
chon (assoc 62 tt)
 )
 (cond
   (chon (cdr chon))
   (t (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 tt))))))
 )
)
(defun filterchondttheomau (mau)
 (defun chonlayertheomau (mau / kq)
   (setq curlay (tblnext "LAYER" t))
   (while curlay
     (if (= mau (cdr (assoc 62 curlay)))
(setq kq (append kq (list (cdr (assoc 2 curlay)))))
     )
     (setq curlay (tblnext "LAYER"))
   )
   kq
 )
 (setq	filterlist
	   nil
taplayer   (chonlayertheomau mau)
 )
 (foreach pp taplayer
   (setq filterlist
   (append filterlist
	   (list (cons -4 "			 (cons 62 256)
		 (cons 8 pp)
		 (cons -4 "AND>")
	   )
   )
   )
 )
 (setq	filterlist
 (append (list (cons -4 "		 filterlist
	 (list (cons -4 "OR>"))
 )
 )
)

  • Vote tăng 2

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

Cám ơn bác hoành, rất đúng ý em! Em dang cần 1 lisp nữa có nội dung sau: gọi là lisp explore đối tượng có thickness,

VD: trên màn hình là 1 line có thickness là 10, chiều dài 8 (nhìn trong 3D sẽ là 1 hình chữ nhật). tuy nhiên lệnh explore không có tác dụng với đối tượng này, có anh nào có lisp có thể explore đối tượng ra thành 4 line riêng rẽ không? em cám ơn!

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
Cám ơn bác hoành, rất đúng ý em! Em dang cần 1 lisp nữa có nội dung sau: gọi là lisp explore đối tượng có thickness,

VD: trên màn hình là 1 line có thickness là 10, chiều dài 8 (nhìn trong 3D sẽ là 1 hình chữ nhật). tuy nhiên lệnh explore không có tác dụng với đối tượng này, có anh nào có lisp có thể explore đối tượng ra thành 4 line riêng rẽ không? em cám ơn!

Lệnh EXPL (Explode Line) dưới đây sẽ làm điều bạn muốn.

 

(defun c:expl()
 (princ "\nExplode lines with thickness to Lines - free lisp from CADViet.com")  
 (sudung exponeline (ssget '((0 . "LINE")(-4 . ""))))
 (princ)
)

(defun exponeline(ent)  
 (setq
   tt (entget ent)
   p1 (cdr (assoc 10 tt))
   p2 (cdr (assoc 11 tt))
   vt (cdr (assoc 210 tt))
   cao (cdr (assoc 39 tt))
   a (car vt)
   b (cadr vt)
   c (caddr vt)
   xf (* (/ a (+ a b c)) cao)
   yf (* (/ b (+ a b c)) cao)
   zf (* (/ c (+ a b c)) cao)
   p3 (list
 (+ (car p2) xf)
 (+ (cadr p2) yf)
 (+ (caddr p2) zf)
      )
   p4 (list
 (+ (car p1) xf)
 (+ (cadr p1) yf)
 (+ (caddr p1) zf)
      )
   tt (vl-remove (assoc 11 tt) (vl-remove (assoc 10 tt) (subst (cons 39 0.0) (assoc 39 tt) tt)))
 )
 (entmod (append tt (list (cons 10 p1)(cons 11 p2))))
 (entmake (append tt (list (cons 10 p1)(cons 11 p4))))
 (entmake (append tt (list (cons 10 p2)(cons 11 p3))))
 (entmake (append tt (list (cons 10 p3)(cons 11 p4))))
)

(defun sudung (ham ss / sodt index entdt soapp)
 (setq	sodt  (if ss (sslength ss) 0)
soapp 0
index 0
 )
 (repeat sodt
   (setq entdt	(ssname ss index)
  index	(1+ index)
   )
   (if	(ham entdt)
     (setq soapp (1+ soapp))
   )
 )
 soapp
)
(princ "\nExplode Line - free lisp from CADViet.com")
(princ "\nPlease use EXPL to use this command")
(vl-load-com)

  • Vote tăng 1

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

Thanks anh Hoành, em đang cần 1 lisp nữa có nội dung như sau:

Gọi là lisp extrude 1 đối tượng kín (rectang, pline kín...) lên 1 giá trị nhập vào và đồng thời fillet luôn các cạnh (trên và dưới)của đối tượng đó với chú ý bán kính của fillet bằng nửa của giá trị nhập extrude.

Ví dụ: trên màn hình là 1 circle, chạy lisp hỏi nhập gía trị extrude, kết quả là 1 hình nhìn trong 3D thì giống như cái nút bấn hay cái bánh rán bẹt vậy (vì 2 circle trên và dưới đã được bo tròn).

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
Thanks anh Hoành, em đang cần 1 lisp nữa có nội dung như sau:

Gọi là lisp extrude 1 đối tượng kín (rectang, pline kín...) lên 1 giá trị nhập vào và đồng thời fillet luôn các cạnh (trên và dưới)của đối tượng đó với chú ý bán kính của fillet bằng nửa của giá trị nhập extrude.

Ví dụ: trên màn hình là 1 circle, chạy lisp hỏi nhập gía trị extrude, kết quả là 1 hình nhìn trong 3D thì giống như cái nút bấn hay cái bánh rán bẹt vậy (vì 2 circle trên và dưới đã được bo tròn).

Cái này nằm ngoài khả năng của tô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
Cái này nằm ngoài khả năng của tôi!

Vâng, đúng là khó thật, thôi thì thế này anh lập giúp em 1 lisp lấy ra kết quả chiều cao extrude của 1 đối tượng 3D solid nha!(nếu đối tượng là box thì lấy height của nó) sau đó nhập điểm chèn kết qủa, còn lại em sẽ tự xử lý, thanks bá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
Vâng, đúng là khó thật, thôi thì thế này anh lập giúp em 1 lisp lấy ra kết quả chiều cao extrude của 1 đối tượng 3D solid nha!(nếu đối tượng là box thì lấy height của nó) sau đó nhập điểm chèn kết qủa, còn lại em sẽ tự xử lý, thanks bác!?

Xin lỗi bạn, vẫn nằm ngoài khả năng.

Tất cả các vấn đề về lấy dữ liệu hay modify khối 3D Solid bằng lisp đều nằm ngoài khả năng của tô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

bác Hoành giúp e với cái lips tính diện tích trong quy hoạch e tìm thấy trên này nhưng chưa đạt yêu cầu thực tế sử dụng của dân quy hoạch lắm e mong bác chỉnh sửa lại giúp theo 1 số điều kiện sau:

1 - chỉ cần 2 loại ký hiệu vòng tròn :(nếu có thể tùy biến được cái này thì hay quá)

+loại 1 : bao gồm các ký hiệu như: tên lô đất, diện tích, mật độ xây dựng, tầng cao tb, hệ số sử dụng đất

+loại 2 : tên lô đất, diện tích

2- Riêng ký hiệu tên lô đất phải là font khác so với các ký hiệu còn lại - dùng font chữ đậm hơn, các text thể hiện các thông số thì dùng text Fit để tránh tình trạng số dài quá thường lấn sang ô bên cạnh và tòi ra cả ngoài vòng tròn (trông xấu và lem nhem lắm ạ - cái lips hiện tại đang mắc phải vấn đề này)

3 - Khi thay đổi diện tích lô thì số trong ký hiệu tự động thay đổi theo

4 - chọn được nhiều lô đất cùng 1 lúc và tất cả vòng tròn ký hiệu luôn luôn hiện ở trung tâm của lô đất (cái lips trên này cứ bắt pick vị trí đặt ký hiệu theo e là thừa ko cần thiết)

trên đây là nhu cầu rất cần thiết của dân làm quy hoạch bọn e mong các bác nghiên cứu giúp đỡ ạ!, thanks các bác!

đây là bài post cái lips trên : http://www.cadviet.com/forum/index.php?showtopic=855

mong các bác điều chỉnh lại một chút thì mọi người mới áp dụng được ạ, cám ơn các bác 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
bác Hoành giúp e với cái lips tính diện tích trong quy hoạch e tìm thấy trên này nhưng chưa đạt yêu cầu thực tế sử dụng của dân quy hoạch lắm e mong bác chỉnh sửa lại giúp theo 1 số điều kiện sau:

1 - chỉ cần 2 loại ký hiệu vòng tròn :(nếu có thể tùy biến được cái này thì hay quá)

+loại 1 : bao gồm các ký hiệu như: tên lô đất, diện tích, mật độ xây dựng, tầng cao tb, hệ số sử dụng đất

+loại 2 : tên lô đất, diện tích

2- Riêng ký hiệu tên lô đất phải là font khác so với các ký hiệu còn lại - dùng font chữ đậm hơn, các text thể hiện các thông số thì dùng text Fit để tránh tình trạng số dài quá thường lấn sang ô bên cạnh và tòi ra cả ngoài vòng tròn (trông xấu và lem nhem lắm ạ - cái lips hiện tại đang mắc phải vấn đề này)

3 - Khi thay đổi diện tích lô thì số trong ký hiệu tự động thay đổi theo

4 - chọn được nhiều lô đất cùng 1 lúc và tất cả vòng tròn ký hiệu luôn luôn hiện ở trung tâm của lô đất (cái lips trên này cứ bắt pick vị trí đặt ký hiệu theo e là thừa ko cần thiết)

trên đây là nhu cầu rất cần thiết của dân làm quy hoạch bọn e mong các bác nghiên cứu giúp đỡ ạ!, thanks các bác!

đây là bài post cái lips trên : http://www.cadviet.com/forum/index.php?showtopic=855

mong các bác điều chỉnh lại một chút thì mọi người mới áp dụng được ạ, cám ơn các bác nhiều

Bạn đừng viết văn tả cảnh làm gì!

Hãy upload một ký hiệu mẫu dạng block attribute của bạn lên diễn đàn, bạn sẽ được như ý.

 

Trong thời đại công nghệ, đừng tự trói tay mình.

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

các bác ơi, em đang cần 1 lisp có chức năng thay đổi giá trị biến DIMEXE: ý tưởng lisp của em là chọn 1 đối tượng dim trên màn hình sau đó lisp hỏi nhập gía trị dimexe cần thay đổi, sẽ cho kết quả dim đó sẽ nhận giá trị dimexe vừa nhập, Các anh giúp em nha, thanks!

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
các bác ơi, em đang cần 1 lisp có chức năng thay đổi giá trị biến DIMEXE: ý tưởng lisp của em là chọn 1 đối tượng dim trên màn hình sau đó lisp hỏi nhập gía trị dimexe cần thay đổi, sẽ cho kết quả dim đó sẽ nhận giá trị dimexe vừa nhập, Các anh giúp em nha, thanks!

Bạn nhấn phím Ctrl+F1, dò đến chỗ cần sửa, nhập số vào.

Vừa có giao diện đẹp, lại thân thiện, dùng lisp làm gì!

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
Bạn nhấn phím Ctrl+F1, dò đến chỗ cần sửa, nhập số vào.

Vừa có giao diện đẹp, lại thân thiện, dùng lisp làm gì!

Em dựa vào cái lisp mà bác vừa viết cho em nhưng chưa biết xoay sở thế nào , mong bác giúp em:

(defun c:suaEXE (/ str ent)

(setq ent1 (car (entsel "\nHay chon dim: "))

giatrimoi (getreal "\nHay nhap vao gia tri DIMEXE moi: ")

 

;; em mắc ở đây ??? ent (giatrimoi cho ent1) ??? ; để lấy ra cái ent cho dim mới

 

str (rtos (getdimcode ent 40) 2 4)

)

)

;; và kết thúc như thế nào???

 

(defun wtxt (txt p / sty d h)

(setq

sty (getvar "textstyle")

d (tblsearch "style" sty)

h (cdr (assoc 40 d))

)

(entmake (list (cons 0 "TEXT")

(cons 7 sty)

(cons 1 txt)

(cons 10 p)

(if (> h 0)

(cons 40 h)

(assoc 40 d)

)

(assoc 41 d)

)

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
Em dựa vào cái lisp mà bác vừa viết cho em nhưng chưa biết xoay sở thế nào , mong bác giúp em:

(defun c:suaEXE (/ str ent)

(setq ent1 (car (entsel "\nHay chon dim: "))

giatrimoi (getreal "\nHay nhap vao gia tri DIMEXE moi: ")

 

;; em mắc ở đây ??? ent (giatrimoi cho ent1) ??? ; để lấy ra cái ent cho dim mới

 

str (rtos (getdimcode ent 40) 2 4)

)

)

;; và kết thúc như thế nào???

Bó tay thực sự, không biết bạn mắc cái gì, ở đâu nữa.

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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×