Đến nội dung


Hình ảnh
- - - - -

Dãn đều các Dim theo phương đường dóng với khoảng cách các Dim ta nhập vào !!!!!!!


  • Please log in to reply
6 replies to this topic

#1 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 01 June 2009 - 04:45 PM

Phiền bác Tuệ sửa giúp em cái lisp dãn đều Dim theo phương đường dóng cái, Cái lisp lần trước bác cho em thì mình không nhập được khoảng cách các Dim theo phương đường dóng vào, Bi jờ người kiểm tra bản vẽ bắt thay đổi khoảng cách các Dim đó theo phương đường dóng khác đi và bắt mọi cái phải đều nhau. Em đang dở khóc dở cười đây này . huhuhu
CODE cũ : (Code này ko cho phép nhập khoảng cách, yêu cầu sửa đổi CODE để người dùng khoảng cách các đường Dim theo phương đường dóng vào )

Ảnh minh họa yêu cầu : http://www.cadviet.c...les/yeu_cau.jpg
; ===============dan deu Dim
(defun c:sd ()
(defun ss2ent (ss / sodt index lstent)
(setq
sodt (cond
(ss (sslength ss))
(t 0)
)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)
(defun hoanh_newerror (msg)
(if (and (/= msg "Function cancelled")
(/= msg "quit / exit abort")
)
(princ (strcat "\n" msg))
)
(done)
)
;;----------
(defun init ()
(setq
HOANH_CMD (getvar "CMDECHO")
HOANH_OLDERROR *error*
*error* hoanh_newerror

)
(setvar "CMDECHO" 0)
(command ".undo" "BE")
)
;;----------
(defun done ()
(command ".redraw")
(command ".undo" "E")
(if HOANH_CMD
(setvar "CMDECHO" HOANH_CMD)
)
(if HOANH_OLDERROR
(setq *error* HOANH_OLDERROR)
)
(princ)
)
;;----------

(defun cdim (entdt pchan pduong / tt old10
old13 old14 new10 new13 new14 p10n
p13n p14n p10o p13o p14o gocduong
gocchan pchanb pduongb loaidim
)
(defun chanvuonggoc (ph p1 p2 / ptemp pkq goc)
(setq
goc (+ (angle p1 p2) (/ pi 2.0))
ptemp (polar ph goc 1000.0)
pkq (inters ph ptemp p1 p2 nil)
)
pkq
)
(setq
tt (entget entdt)
old10 (assoc '10 tt)
old13 (assoc '13 tt)
old14 (assoc '14 tt)
p10o (cdr old10)
p13o (cdr old13)
p14o (cdr old14)
loaidim (logand (cdr (assoc '70 tt)) 7)
gocduong (cond
((= loaidim 1) (angle p13o p14o))
((= loaidim 0) (cdr (assoc '50 tt)))
(t nil)
)
pchan (cond
(pchan (list (car pchan) (cadr pchan) 0.0))
(t pchan)
)
pduong (cond
(pduong (list (car pduong) (cadr pduong) 0.0))
(t pduong)
)

)
(if gocduong
(progn
(if pchan
(setq
pchanb (polar pchan gocduong 1000.0)
p13n (chanvuonggoc
(list (car p13o) (cadr p13o) 0.0)
pchan
pchanb
)
p14n (chanvuonggoc
(list (car p14o) (cadr p14o) 0.0)
pchan
pchanb
)
new13 (cons 13 p13n)
new14 (cons 14 p14n)
tt (subst new13 old13 tt)
tt (subst new14 old14 tt)
)
)
(if pduong
(setq
pduongb (polar pduong gocduong 1000.0)
p10n (chanvuonggoc
(list (car p10o) (cadr p10o) 0.0)
pduong
pduongb
)
new10 (cons 10 p10n)
tt (subst new10 old10 tt)
)
)
(entmod tt)
)
)
gocduong
)

(defun textdimheight (ent / tmp)
(command ".copy" ent "" (list 0.0 0.0 0.0) "@")
(command ".explode" (entlast) "")
(setq tmp (cdr (assoc 40 (entget (entlast)))))
(command ".erase" "p" "")
tmp
)
(defun phia (p1 p2 p3 / x1 y1 z1 x2 y2 z2 x3 y3 z3)
(setq
x1 (car p1)
y1 (cadr p1)
z1 (caddr p1)
x2 (car p2)
y2 (cadr p2)
z2 (caddr p2)
x3 (car p3)
y3 (cadr p3)
z3 (caddr p3)
tmp (+ (* (- x1 x2) x3)
(* (- y1 y2) y3)
(* (- z1 z2) z3)
)
)
(cond
((= tmp 0.0) 0.0)
(t (/ tmp (abs tmp)))
)
)
(defun khoangcachdim (p1 ent goc / tt p2 A B D)
(setq tt (entget ent)
p2 (cdr (assoc 10 tt))
B (cdr (assoc 50 tt))
A (angle p1 p2)
D (distance p1 p2)
)
(* (* D (sin (- A B ))) (phia p1 (polar p1 goc 1.0) p2))
)

(defun phanloai (ent)
(setq
kc (khoangcachdim pgoc ent goc)
loai (fix (/ kc heightdimgoc 0.93))
)
(cons loai ent)
)

(init)
(princ "\nSap xep dim ")
(while (not (setq entgoc (car (entsel "\nChon duong dim goc: "))))
)
(setq
ttgoc (entget entgoc)
p13goc (cdr (assoc 13 ttgoc))
pgoc (cdr (assoc 10 ttgoc))
goc (cdr (assoc 50 ttgoc))
heightdimgoc (textdimheight entgoc)
ssd (ssget (list
(cons 0 "DIMENSION")
(cons -4 "(cons 70 32)
(cons 70 64)
(cons 70 96)
(cons 70 128)
(cons 70 160)
(cons 70 196)
(cons 70 224)
(cons -4 "OR>")
(cons -4 "(cons 50 goc)
(cons 50 (+ goc pi))
(cons 50 (- goc pi))
(cons -4 "OR>")
)
)
lstd (ss2ent ssd)
lstd (mapcar 'phanloai lstd)
lstlevel nil
)
(foreach pp lstd
(if (not (member (car pp) lstlevel))
(setq lstlevel (append lstlevel (list (car pp))))
)
)
(setq lstlevel (vl-sort lstlevel '(lambda (x1 x2) (< x1 x2)))
lstam nil
lstduong nil
lstamtmp nil
lstduongtmp nil
)
(foreach pp lstlevel
(if (< pp 0.0)
(setq lstam (append lstam (list pp)))
)
(if (> pp 0.0)
(setq lstduong (append lstduong (list pp)))
)
)
(setq index 0)
(foreach pp (reverse lstam)
(setq
index (1+ index)
lstamtmp (append lstamtmp (list (cons pp index)))
)
)
(setq
lstam lstamtmp
index 0
)
(foreach pp lstduong
(setq
index (1+ index)
lstduongtmp (append lstduongtmp (list (cons pp index)))
)
)
(setq lstduong lstduongtmp)
(setq lstlevel (append lstduong lstam (list (cons 0.0 0))))

(setq kcdimstandard (* 3.0 heightdimgoc))
(foreach pp lstd
(setq plht (car pp))
(progn
(setq
kcdimht (khoangcachdim pgoc (cdr pp) goc)
duongthu (cdr (assoc plht lstlevel))
heso (cond
((/= 0 kcdimht)
(abs (* (/ kcdimstandard kcdimht) duongthu))
)
(t 0.0)
)
diemchenht (cdr (assoc 10 (entget (cdr pp))))
pmoi (polar pgoc
(angle pgoc diemchenht)
(* heso (distance pgoc diemchenht))
)
)

(cdim (cdr pp) p13goc pmoi)
)
)
(done)
)
(princ "\Hoang Giang")
(princ)
  • 0
Hoàng Giang

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 01 June 2009 - 04:57 PM

Phiền bác Tuệ sửa giúp em cái lisp dãn đều Dim theo phương đường dóng cái, Cái lisp lần trước bác cho em thì mình không nhập được khoảng cách các Dim theo phương đường dóng vào, Bi jờ người kiểm tra bản vẽ bắt thay đổi khoảng cách các Dim đó theo phương đường dóng khác đi và bắt mọi cái phải đều nhau. Em đang dở khóc dở cười đây này . huhuhu

Bạn làm tôi buồn rồi đây. Lisp mà Tue_NV sửa lại cho bạn là Lisp cắt chân dim với khoảng cách đường dóng do user nhập vào. http://www.cadviet.c...amp;#entry62525
Đoạn Lisp mà Tue_NV cho bạn là Lisp nào nhỉ? Hoàn toàn không có.

Đoạn Lisp mà bạn post ở trên là Lisp của bác Hoành về sắp xếp dim

Chẳng ai có thể giúp được bạn trừ khi bạn nói rõ và kèm theo file .dwwg minh hoạ
  • 0

#3 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 02 June 2009 - 07:41 AM

Bạn làm tôi buồn rồi đây. Lisp mà Tue_NV sửa lại cho bạn là Lisp cắt chân dim với khoảng cách đường dóng do user nhập vào. http://www.cadviet.c...amp;#entry62525
Đoạn Lisp mà Tue_NV cho bạn là Lisp nào nhỉ? Hoàn toàn không có.

Đoạn Lisp mà bạn post ở trên là Lisp của bác Hoành về sắp xếp dim

Chẳng ai có thể giúp được bạn trừ khi bạn nói rõ và kèm theo file .dwwg minh hoạ

Trời đất, Em đã Post hình minh họa yêu cầu rùi mà bác ko hiểu ý em à, bác xem cái hình yêu cầu này:
http://www.cadviet.c...s/yeu_cau_1.jpg

Lisp bác Hoành cho ko cho phép người dùng nhập khoảng cách Dim mà khoảng cách các đường đó là mặc định, Jờ em muốn bác Sửa Lisp đó để mình nhập được khoảng cách các đường Dim vào. Em đang bị mụ già kiểm bài gây khó dễ vì vụ này. Mụ ta già rùi nên khó tính kinh khủng, Săm soi em quá, Bác không giúp em thì em mất cả ngày để chình mấy đường Dim cho nó dãn đều nhau cũng không xong ấy chứ ? Thế thì đến tháng làm j ra mà được lĩnh lương !!! huhuhuhu
  • 1
Hoàng Giang

#4 tonyluy

tonyluy

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 October 2009 - 08:35 AM

Đúng rồi. việc dàn hàng dim như bác HOÀNH nói hay thật . Nhưng ta không thể lựa chọn khoảng cách giữa các đường dim một cách tuỳ ý. điều này rất bất tiện. Nhất là trong các bản vẽ thép thường có thêm ghi chú về thép đai ví dụ nhu đai phi 8 a200 chẳng hạn. bản vẽ như thế bao giờ chữ này cũng được ghi dưới hàng dim. nếu không được nhập khoảng cách thì sẽ bị chống lên nhau rất xấu. Nhờ bạn Hoành hay ban Tue hoàn thiện dim này cái. thanks alot
  • 0

#5 halen

halen

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 January 2010 - 10:32 PM

Bạn làm tôi buồn rồi đây. Lisp mà Tue_NV sửa lại cho bạn là Lisp cắt chân dim với khoảng cách đường dóng do user nhập vào. http://www.cadviet.c...amp;#entry62525
Đoạn Lisp mà Tue_NV cho bạn là Lisp nào nhỉ? Hoàn toàn không có.

Đoạn Lisp mà bạn post ở trên là Lisp của bác Hoành về sắp xếp dim

Chẳng ai có thể giúp được bạn trừ khi bạn nói rõ và kèm theo file .dwwg minh hoạ

Đây là một ý kiến hay khi vẽ ta rất cần nhưng nếu sử dụng lisp của anh Hoành thì khoảng cách giữa các dòng dim là 3h. Với h là chiều cao của text trong dim. Vì vậy không có sự lựa chọn cho người sử dụng nhập vào, gây bất tiền cho một số trường hợp. Lisp sinh ra là để phục phụ cho công việc của mỗi người nhanh hơn. Nhưng không phải ai cũng viết được lisp, bản thân tôi cũng là người không biết viết lisp lên kính mong những ai có thể viết lisp viết hộ dùm để cho anh em thuận tiện hơn trong công việc. ah Việc giãn dòng dim tôi nghĩ cũng gần giống giãn dòng text mà tôi đã đọc được trên diễn đàn. Mong các bác giúp đỡ. Thank
  • 0

#6 halen

halen

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 05 January 2010 - 08:42 PM

Bạn làm tôi buồn rồi đây. Lisp mà Tue_NV sửa lại cho bạn là Lisp cắt chân dim với khoảng cách đường dóng do user nhập vào. http://www.cadviet.c...amp;#entry62525
Đoạn Lisp mà Tue_NV cho bạn là Lisp nào nhỉ? Hoàn toàn không có.

Đoạn Lisp mà bạn post ở trên là Lisp của bác Hoành về sắp xếp dim

Chẳng ai có thể giúp được bạn trừ khi bạn nói rõ và kèm theo file .dwwg minh hoạ


Bác giúp anh em hoàn thành nốt cái lisp này cái: Cài lisp của bác Hoành đã tốt rồi nhưng để hoàn thiện hơn thì bác và bác Hoành em biết là dư sức có thể làm được là cho người dùng nhập vào khoảng cách giữa các đường dim, có thể nhập số hoặc cũng có thể nhập bằng phương pháp pick 2 điểm bất kỳ.
Mong anh em nào có khả năng giúp hộ tôi cái.
Xin chân thành cảm ơn!

  • 0

#7 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 05 January 2010 - 09:08 PM

Với AutoCAD 2008 bạn chỉ cần dùng lệnh DIMSPACE

Hình đã gửiHình đã gửi
  • 0