Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#2261 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 01 July 2009 - 10:06 AM

"Một đoạn lisp nhỏ, chưa lời đáp
Cho đến bây giờ mặt vẫn chau"
(cảm ơn Haanh đã nhắc lại bài thơ "Các vị La Hán chùa Tây Phương" của Huy Cận trên diễn đàn)

Đó là cái lisp tạo hatch này. Tạo 1 hatch kiểu solid, hình tròn, bán kính và điểm pick tâm hình tròn do user chọn:

(defun c:NUT (/ R poNUT Xnut Ynut Q1 Q2 Lhatch)
(setvar "cmdecho" 0)
(setq R (getreal "\nBan kinh nut: ")
poNUT (getpoint "\nDiem chen nut: ")
)
(setq Xnut (car poNUT)
Ynut (cadr poNUT))
(setq Q1 (cons 10 (list Xnut (+ Ynut R) 0.0))
Q2 (cons 10 (list Xnut (- Ynut R) 0.0)))
(setq Lhatch (list (cons 0 "HATCH")
'(100 . "AcDbEntity")
(cons 8 "0")
'(100 . "AcDbHatch")
(cons 10 (list 0.0 0.0 0.0))
(cons 210 (list 0.0 0.0 1.0))
(cons 2 "solid")
(cons 70 1)
(cons 71 0)
(cons 91 1)
(cons 92 1)
(cons 73 1)
(cons 93 1)
(cons 40 R) ;bankinh
Q1
(cons 72 2)
(cons 42 1.0)
Q2
(cons 42 1.0)
(cons 98 1)
(cons 75 0)
(cons 76 1)
(cons 210 (list 0.0 0.0 1.0))
(cons 470 "LINEAR") ;
)
)
(entmake Lhatch)
(princ)
)

Lisp không báo lỗi, nhưng lại không tạo hatch trên màn hình, thiep không hiểu lỗi gì, mong các anh em Cadviet chỉnh sửa giúp.
Trân trọng.
  • 0

#2262 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 01 July 2009 - 06:42 PM

"Một đoạn lisp nhỏ, chưa lời đáp
Cho đến bây giờ mặt vẫn chau"
(cảm ơn Haanh đã nhắc lại bài thơ "Các vị La Hán chùa Tây Phương" của Huy Cận trên diễn đàn)

Đó là cái lisp tạo hatch này. Tạo 1 hatch kiểu solid, hình tròn, bán kính và điểm pick tâm hình tròn do user chọn:

(defun c:NUT (/ R poNUT Xnut Ynut Q1 Q2 Lhatch)
(setvar "cmdecho" 0)
(setq R (getreal "\nBan kinh nut: ")
poNUT (getpoint "\nDiem chen nut: ")
)
(setq Xnut (car poNUT)
Ynut (cadr poNUT))
(setq Q1 (cons 10 (list Xnut (+ Ynut R) 0.0))
Q2 (cons 10 (list Xnut (- Ynut R) 0.0)))
(setq Lhatch (list (cons 0 "HATCH")
'(100 . "AcDbEntity")
(cons 8 "0")
'(100 . "AcDbHatch")
(cons 10 (list 0.0 0.0 0.0))
(cons 210 (list 0.0 0.0 1.0))
(cons 2 "solid")
(cons 70 1)
(cons 71 0)
(cons 91 1)
(cons 92 1)
(cons 73 1)
(cons 93 1)
(cons 40 R) ;bankinh
Q1
(cons 72 2)
(cons 42 1.0)
Q2
(cons 42 1.0)
(cons 98 1)
(cons 75 0)
(cons 76 1)
(cons 210 (list 0.0 0.0 1.0))
(cons 470 "LINEAR") ;
)
)
(entmake Lhatch)
(princ)
)

Lisp không báo lỗi, nhưng lại không tạo hatch trên màn hình, thiep không hiểu lỗi gì, mong các anh em Cadviet chỉnh sửa giúp.
Trân trọng.


Tạo hatch bằng entmake thì đúng là đụng vô ổ kiến lửa rùi. Hatch có rất nhiều code mà nhiều cái mình ko thể hiểu nó là cái gì, ngoài 2 điểm q1 q2 nó còn có 1 điểm nữa (code 10) mà toạ độ chẳng ăn nhập gì với 2 cái q1 q2 thì làm sao mình biết mà tính được.
Sao bạn ko chọn cách tạo hatch nào đon giản hơn?
  • 0

#2263 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 02 July 2009 - 06:17 PM

[quote name='HoangSon614' date='Jun 24 2009, 16:25' post='65317']
[quote name='Tue_NV' post='65306' date='Jun 24 2009, 15:57']
Chào bạn Tue_NV!
Mình làm phiền bạn lần nữa nha, muốn bạn viết dùm mình 1lisp (Copy text tăng dần) như sau:
Khởi động, lisp hỏi chọn đối tượng >> bấm chọn >> OK (Cụ thể như: 01/5 -> 02/5 .....05/5)
(Mình đã có lisp copy text tăng dần rồi nhưng sử dụng vào trường hợp này không được (VD: 01/5 -> 01/6, 01/7). Cố gắng giúp mình nha. Cảm ơn bạn
  • 0

#2264 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 July 2009 - 06:47 PM

Mình làm phiền bạn lần nữa nha, muốn bạn viết dùm mình 1lisp (Copy text tăng dần) như sau:
Khởi động, lisp hỏi chọn đối tượng >> bấm chọn >> OK (Cụ thể như: 01/5 -> 02/5 .....05/5)
(Mình đã có lisp copy text tăng dần rồi nhưng sử dụng vào trường hợp này không được (VD: 01/5 -> 01/6, 01/7). Cố gắng giúp mình nha. Cảm ơn bạn

Lisp này Tue_NV đã viết rồi. HoangSon đọc bài viết này nhé :
Bài viết số 45 - Đánh số thứ tự tăng dần
Nhưng có khác 1 chút với yêu cầu của bạn nhưng tựu trung lại nó cùng 1 mục đích .
Danh so thu tu dang n/m
Khi chạy Lisp hỏi :
Danh so bat dau (n)
Danh so tong (m)
-> Bạn chọn điểm chèn Text-> Lisp sẽ đánh số thứ tự dạng n/m theo ý của bạn
Chúc vui :s_big:
  • 0

#2265 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 02 July 2009 - 08:30 PM

Lisp này Tue_NV đã viết rồi. HoangSon đọc bài viết này nhé :
Bài viết số 45 - Đánh số thứ tự tăng dần
Nhưng có khác 1 chút với yêu cầu của bạn nhưng tựu trung lại nó cùng 1 mục đích .
Danh so thu tu dang n/m
Khi chạy Lisp hỏi :
Danh so bat dau (n)
Danh so tong (m)
-> Bạn chọn điểm chèn Text-> Lisp sẽ đánh số thứ tự dạng n/m theo ý của bạn
Chúc vui :cheers:

Cảm ơn bạn nhiều, nhưng mình muốn trước số 1 là con số 0 có được không bạn (cụ thể: 01/2, 02/2)
Nếu được bạn chỉnh lại giúp mình. Thank....bạn
  • 0

#2266 dienlicogi17

dienlicogi17

    biết pan

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

Đã gửi 02 July 2009 - 10:36 PM

Mình hiện đang dùng phần mềm Landesktop đề làm việc. Mình tìm được một Lisp trên diễn đàn hỗ trợ mình rất tốt khi vẽ mặt cắt, cũng không nhớ của bạn nào viết nữa. Hôm nay mình đưa lên nhờ mọi người giúp mình thêm cho lisp một tính năng nữa là lisp chạy thêm được một hàng khoảng cách lẻ bên dưới cột cao độ. Nếu được mình sẽ rất cảm ơn. Đây là đoạn lisp mình đang sử dụng:
(defun c:SCD()
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)

(setq olddim (getvar "dimzin"))

(setvar "dimzin" 0)
(setq mss (car(entsel "\n Chon mat so sanh :")))
(HLI mss)
(setq gtmss (getreal "\n Nhap gia tri mat so sanh :"))

(setq PL (car (entsel "\n Chon Pline :")))
(HLI PL)

(setq pr (vlax-curve-getEndParam PL) i 0)

(setq cao (getreal "\n Chon chieu cao chu :"))
(setq tp (getint "\n So chu so thap phan :"))

(while (<= i pr)

(setq po (vlax-curve-getPointAtParam PL i))

(setq po2 (vlax-curve-getClosestPointTo mss po))
(setq pot (list (car po2) (- (cadr po2) (/ cao 2)) 0))
(setq kc (+ (distance po po2) gtmss))
(Command "line" po po2 "")
(Command "style" "CADVIET" "TIMES.TTF" "0" "1" "0" "N" "N")
(Command "Text" "j" "BR" pot cao "90" (rtos kc 2 tp))
(HLI PL)
(setq i (1+ i))

)
(setvar "dimzin" olddim)
(setvar "osmode" oldos)
(command "undo" "end")
(Princ)
)

;
(defun HLI(enT)
(sssetfirst (ssadd enT (ssadd)) (ssadd enT (ssadd)))
)
  • 0
Hồng Diễn - Mobile: 0936.458.268 - Email: Dienlicogi17@gmail.com

#2267 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 July 2009 - 04:12 AM

Mình hiện đang dùng phần mềm Landesktop đề làm việc. Mình tìm được một Lisp trên diễn đàn hỗ trợ mình rất tốt khi vẽ mặt cắt, cũng không nhớ của bạn nào viết nữa. Hôm nay mình đưa lên nhờ mọi người giúp mình thêm cho lisp một tính năng nữa là lisp chạy thêm được một hàng khoảng cách lẻ bên dưới cột cao độ. Nếu được mình sẽ rất cảm ơn. Đây là đoạn lisp mình đang sử dụng:

Chào bạn dienlicogi17
Lisp này của chính Tue_NV viết cho bạn Thuyvan. Nó nằm ngay trong chính topic này
Tue_NV không phải là dân cầu đường nên mình chỉ am hiểu một phần nào đó trong chuyên ngành của bạn thôi. Vậy nên bạn muốn nhờ Tue_NV chỉnh sửa lại Code này thì bạn phải nói rõ và mình nghĩ bạn nên post file .dwg nói rõ điều bạn muốn
Bởi lẽ không phải ai cũng hiểu như bạn. Viết Lisp ra không đúng ý bạn thì mất thời gian lắm.


@HoangSon: Bạn nên rút kinh nghiệm là nói cho đầy đủ ý.
Ví dụ nhé : bản vẽ 01/9 . Số 1 thêm số 0 đằng trước thành 01. còn số 9 có thêm 0 đằng trước hay không?
Viết ra rồi ừ thì tôi muốn thêm số 0 đằng trước số 9 nữa thì mất công lắm.
Bạn nên suy nghĩ cho thật kĩ, có cái nhìn tổng quát trước khi viết bài

Nếu bạn muốn thêm số 0 đằng trước số 1 hay muốn thêm số 0 đằng trước số 9 thì sử dụng Lisp tgtext của Tue_NV. Nó sẽ thêm kí tự do user nhập vào cách vị trí đầu hay vị trí cuối bao nhiêu kí tự
Còn nếu bạn muốn thì Tue_NV sẽ thêm vào Code cho bạn

;; copyright by Tue_NV
(defun c:dstt(/ dau tong po po1 ent i)
(prompt "\n Danh so thu tu dang n/m ")
(setvar "cmdecho" 0)

(setq dau (getint "\n Danh so bat dau (n) :"))
(setq tong (getint "\n Danh so tong (m) :") i 1)

(setq po (getpoint
(strcat "\n Cho diem chen cua so : " (if (< dau 10) (strcat "0" (itoa dau)) (itoa dau)) "/" (itoa tong))))
(wtxt (strcat (if (< dau 10) (strcat "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) po)

(Repeat (- tong dau)
(setq po1 (getpoint po
(strcat "\n Cho diem chen cua so : " (if (< (+ dau i) 10) (strcat "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))))

(command "copy" "L" "" po po1)
(setq ent (entget(entlast)))
(setq ent
(subst
(cons 1 (strcat (if (< (+ dau i) 10) (strcat "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))) (assoc 1 ent) ent))
(entmod ent)
(setq i (1+ i))
(setq po po1)
)
(princ)
)
;
(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) (cons 11 p)
(cons 72 1) (cons 73 2)
(if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)

:s_big:

  • 1

#2268 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 03 July 2009 - 06:10 AM

@HoangSon: Bạn nên rút kinh nghiệm là nói cho đầy đủ ý.
Ví dụ nhé : bản vẽ 01/9 . Số 1 thêm số 0 đằng trước thành 01. còn số 9 có thêm 0 đằng trước hay không?
Viết ra rồi ừ thì tôi muốn thêm số 0 đằng trước số 9 nữa thì mất công lắm.
Bạn nên suy nghĩ cho thật kĩ, có cái nhìn tổng quát trước khi viết bài

Nếu bạn muốn thêm số 0 đằng trước số 1 hay muốn thêm số 0 đằng trước số 9 thì sử dụng Lisp tgtext của Tue_NV. Nó sẽ thêm kí tự do user nhập vào cách vị trí đầu hay vị trí cuối bao nhiêu kí tự
Còn nếu bạn muốn thì Tue_NV sẽ thêm vào Code cho bạn


;; copyright by Tue_NV
(defun c:dstt(/ dau tong po po1 ent i)
(prompt "\n Danh so thu tu dang n/m ")
(setvar "cmdecho" 0)

(setq dau (getint "\n Danh so bat dau (n) :"))
(setq tong (getint "\n Danh so tong (m) :") i 1)

(setq po (getpoint
(strcat "\n Cho diem chen cua so : " (if (< dau 10) (strcat "0" (itoa dau)) (itoa dau)) "/" (itoa tong))))
(wtxt (strcat (if (< dau 10) (strcat "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) po)

(Repeat (- tong dau)
(setq po1 (getpoint po
(strcat "\n Cho diem chen cua so : " (if (< (+ dau i) 10) (strcat "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))))

(command "copy" "L" "" po po1)
(setq ent (entget(entlast)))
(setq ent
(subst
(cons 1 (strcat (if (< (+ dau i) 10) (strcat "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))) (assoc 1 ent) ent))
(entmod ent)
(setq i (1+ i))
(setq po po1)
)
(princ)
)
;
(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) (cons 11 p)
(cons 72 1) (cons 73 2)
(if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)

:cheers:

Cảm ơn Tue_NV nhiều...lắm. Nhắc nhở của bạn mình sẽ rút kinh nghiệm (nhưng ngày từ đầu và bài thứ 2 mình đã nêu cụ thể rồi mà). Thanhk bạn lần nữa.
  • 0

#2269 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 03 July 2009 - 08:36 AM

Lisp này của chính Tue_NV viết cho bạn Thuyvan. Nó nằm ngay trong chính topic này
Tue_NV không phải là dân cầu đường nên mình chỉ am hiểu một phần nào đó trong chuyên ngành của bạn thôi. Vậy nên bạn muốn nhờ Tue_NV chỉnh sửa lại Code này thì bạn phải nói rõ và mình nghĩ bạn nên post file .dwg nói rõ điều bạn muốn
Bởi lẽ không phải ai cũng hiểu như bạn. Viết Lisp ra không đúng ý bạn thì mất thời gian lắm.

Mình thử đổi sang font vntimeh.shx thì nó báo lỗi, bác Tue_NV giải thích giùm mình nhé, mình đang mò về lisp nên không rành lắm. :s_big:
Command: scd
undo Current settings: Auto = On, Control = All, Combine = Yes
Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]
<1>: be
Command:
Chon mat so sanh :
Nhap gia tri mat so sanh :6

Chon Pline :
Chon chieu cao chu :0.15

So chu so thap phan :2
line Specify first point:
Specify next point or [Undo]:
Specify next point or [Undo]:
Command: style Enter name of text style or [?] : CADVIET
Existing style.
Specify full font name or font filename (TTF or SHX) : vntimeh.shx
Specify height of text <0.00000000>: 0 Specify width factor <1.00000000>: 1
Specify obliquing angle <0>: 0 Display text backwards? [Yes/No] : N Display
text upside-down? [Yes/No] : N Vertical? Text
Yes or No, please.
; error: Function cancelled
Vertical?

"CADVIET" is now the current text style.
PS: Mình có ý kiến thế này.
1/ Khi lisp chạy thì bị mất truy bắt điểm.
2/ Nhờ bác sửa giúp các thông số đầu vào tự động lưu lại cho các lần sau, và chỉ việc enter nếu không cần thiết phải thay đổi các thông số đó. :blink:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#2270 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 July 2009 - 10:18 AM

PS: Mình có ý kiến thế này.
1/ Khi lisp chạy thì bị mất truy bắt điểm.
2/ Nhờ bác sửa giúp các thông số đầu vào tự động lưu lại cho các lần sau, và chỉ việc enter nếu không cần thiết phải thay đổi các thông số đó. :s_big:

Tue_NV đang đợi ý và yêu cầu của bạn dienlicogi17 rồi cải thiện đoạn Code 1 lần luôn.
  • 0

#2271 dienlicogi17

dienlicogi17

    biết pan

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

Đã gửi 03 July 2009 - 11:03 AM

[quote name='Tue_NV' date='Jul 3 2009, 4:12' post='66125']
Chào bạn dienlicogi17
Lisp này của chính Tue_NV viết cho bạn Thuyvan. Nó nằm ngay trong chính topic này
Tue_NV không phải là dân cầu đường nên mình chỉ am hiểu một phần nào đó trong chuyên ngành của bạn thôi. Vậy nên bạn muốn nhờ Tue_NV chỉnh sửa lại Code này thì bạn phải nói rõ và mình nghĩ bạn nên post file .dwg nói rõ điều bạn muốn
Bởi lẽ không phải ai cũng hiểu như bạn. Viết Lisp ra không đúng ý bạn thì mất thời gian lắm.
Cám ơn bạn đã nhắc nhở mình. Đay là bãn vẽ của minh:
http://www.cadviet.c.../file_mau_2.dwg
Cám ơn cậu đã nhiệt tình giúp đỡ. Thanh kiu nhé! :s_big:
  • 0
Hồng Diễn - Mobile: 0936.458.268 - Email: Dienlicogi17@gmail.com

#2272 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 July 2009 - 01:53 PM

Cám ơn bạn đã nhắc nhở mình. Đay là bãn vẽ của minh:
http://www.cadviet.c.../file_mau_2.dwg
....

Chào dienlicogi và xuantran
Đoạn Code sau Tue_NV đã cải thiện theo ý của dienlicogi và xuantran
Các bạn dùng thử và cho ý kiến :

(defun c:SCD(/ oldos olddim sty d h mss gtmss PL pr tp po po2 pot LA1 po3 po4 po5 kc kcle pott)
;copyright by Tue_NV
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)

(setq olddim (getvar "dimzin"))

(setvar "dimzin" 0)

(setq sty (getvar "textstyle")
d (tblsearch "style" sty))

(if (= (cdr (assoc 40 d)) 0)
(setq h (cdr (assoc 42 d)))
(setq h (cdr (assoc 40 d)))
)

(setq mss (car(entsel "\n Chon mat so sanh :")))
(HLI mss)
(setq gtmss (getreal "\n Nhap gia tri mat so sanh :"))

(setq PL (car (entsel "\n Chon Pline :")))
(HLI PL)

(setq pr (vlax-curve-getEndParam PL) i 1)


(setq tp (getint "\n So chu so thap phan :"))


(setq po (vlax-curve-getPointAtParam PL 0))

(setq po2 (vlax-curve-getClosestPointTo mss po))


(setq pot (list (car po2) (- (cadr po2) (/ h 2)) 0))

(command "offset" (* h 7) mss pot "")
(setq LA1 (entlast))
(setq po4 (vlax-curve-getClosestPointTo LA1 po2))
(setq po5 (list (car po4) (- (cadr po4) (* h 7)) 0))

(command "offset" (* h 14) mss pot "")


(setq kc (+ (distance po po2) gtmss))

(Command "line" po po2 "")
(Command "line" po4 po5 "")

(wtxt (rtos kc 2 tp) pot (/ pi 2))

(while (<= i pr)

(setq po (vlax-curve-getPointAtParam PL i))

(setq po3 (vlax-curve-getClosestPointTo mss po))
(setq po4 (vlax-curve-getClosestPointTo LA1 po3))
(setq po5 (list (car po4) (- (cadr po4) (* h 7)) 0))

(setq kc (+ (distance po po3) gtmss))
(setq kcle (distance po2 po3))

(setq pot (list (car po3) (- (cadr po3) (/ h 2)) 0))
(setq pott (list (- (car po3) (/ kcle 2)) (- (cadr po3) (* (/ h 2) 14)) 0))

(Command "line" po po3 "")
(Command "line" po4 po5 "")
(wtxt (rtos kc 2 tp) pot (/ pi 2))
(wtxt (rtos kcle 2 tp) pott (/ pi 2))
(setq po2 po3)
(setq i (1+ i))

)

(setvar "dimzin" olddim)
(setvar "osmode" oldos)
(command "undo" "end")
(Princ)
)

;
(defun HLI(enT)
(sssetfirst (ssadd enT (ssadd)) (ssadd enT (ssadd)))
)
;
(defun wtxt (txt p ang / 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) (cons 11 p)
(cons 72 2) (cons 73 2) (cons 50 ang)
(if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)

:s_big:
Tick Thanksss thay lời nói cảm ơn :blink: :blink: :blink: :cry: :)
  • 2

#2273 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 03 July 2009 - 02:23 PM

Đã có lỗi xảy ra nên chua kiểm tra được bác Tue-NV ạ.
Command: scd

Chon mat so sanh :
Nhap gia tri mat so sanh :6

Chon Pline :
So chu so thap phan :2

Point or option keyword required.
; error: Function cancelled

Specify point on side to offset or [Exit/Multiple/Undo] :

Command:
Command: *Cancel*
Các truy bắt điểm vẫn bị mất, bác xem lại giúp nhé. :s_big:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#2274 dienlicogi17

dienlicogi17

    biết pan

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

Đã gửi 03 July 2009 - 04:00 PM

:cheers:Cám ơn Tue, Mình đã chạy thử và được rồi. Nhưng cậu giúp mình vẫn để lại chế độ chọn chiều cao chữ nhé. Còn Text thì cậu lấy theo style hiện hành phải không? Còn text cậu cố giúp mình căn vào giữa hàng như bản vẽ mình gửi cho cậu nhé. Cả chiều rộng của hàng text cũng như trong bản vẽ mình gửi cho cậu ý. Chứ thế này cũng hơi to. Mình gửi lại cậu xem nhé!
http://www.cadviet.c.../file_mau_3.dwg
Mình định nhờ cậu giúp mình đoạn lệnh loại bỏ những đường gióng có cao độ gần như nhau. Khoảng cao độ chênh lệch để loại bỏ do người vẽ tự chọn được. Như mặt cắt thứ 3 mình cũng đã loại bỏ bớt trông sẽ đỡ chen dày vào nhau. Nhưng chắc như thế hơi phức tạp. Mình sẽ loại bỏ thủ công vậy.
Cám ơn cậu thật nhiều! Thanh kiu trước nhé. :s_big:
  • 0
Hồng Diễn - Mobile: 0936.458.268 - Email: Dienlicogi17@gmail.com

#2275 dienlicogi17

dienlicogi17

    biết pan

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

Đã gửi 03 July 2009 - 04:06 PM

Mình dùng vẫn bình thường, cả chế độ truy bắt điểm cũng không sao. tại sao của cậu lại bị lỗi nhỉ.
  • 0
Hồng Diễn - Mobile: 0936.458.268 - Email: Dienlicogi17@gmail.com

#2276 lehieu

lehieu

    Chưa sử dụng CAD

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

Đã gửi 03 July 2009 - 04:22 PM

em chào các anh, em là người mới, các anh giúp cho em bài này đc o ạ? :s_big:

THIẾT KẾ DẦM SÀN CƠ BẢN
TỰ ĐỘNG TÍNH TOÁN
VẼ MẶT CẮT DẦM
CHO KÍCH THƯỚC DẦM: CHIỀU DÀI DẦM, CHIỀU RỘNG, CHIỀU CAO
CHIỀU DÀI CÓ THỂ TỪ: 3000-6000
RỘNG: 220
CAO : TỰ ĐỘNG TÍNH=1/10-1/15 CỦA CHIỀU DÀI LÀM TRÒN ĐẾN 50: 250 – 300

TÍNH TOÁN : THỂ TÍCH BÊ TÔNG -> KHỐI LƯỢNG VẬT LIỆU
- ĐÁ 1*2
- CÁT
- XI MĂNG
vẽ bảng thông kê thép
STT Hình dạng , KT ø chiều dài 1 thanh số lượng tổng dài tổng Kg
1 ________ 16
18
20
nt dài + 2* mỏ
2


3 6 2(rộng + cao) + 100 =dài dầm/200


mong các anh giúp em ạ, em cám ơn các anh :blink:
  • 0

#2277 xinh75

xinh75

    biết pan

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

Đã gửi 03 July 2009 - 05:00 PM

em chào các anh, em là người mới, các anh giúp cho em bài này đc o ạ? :s_big:

THIẾT KẾ DẦM SÀN CƠ BẢN
TỰ ĐỘNG TÍNH TOÁN
VẼ MẶT CẮT DẦM
CHO KÍCH THƯỚC DẦM: CHIỀU DÀI DẦM, CHIỀU RỘNG, CHIỀU CAO
CHIỀU DÀI CÓ THỂ TỪ: 3000-6000
RỘNG: 220
CAO : TỰ ĐỘNG TÍNH=1/10-1/15 CỦA CHIỀU DÀI LÀM TRÒN ĐẾN 50: 250 – 300

TÍNH TOÁN : THỂ TÍCH BÊ TÔNG -> KHỐI LƯỢNG VẬT LIỆU
- ĐÁ 1*2
- CÁT
- XI MĂNG
vẽ bảng thông kê thép
STT Hình dạng , KT ø chiều dài 1 thanh số lượng tổng dài tổng Kg
1 ________ 16
18
20
nt dài + 2* mỏ
2


3 6 2(rộng + cao) + 100 =dài dầm/200


mong các anh giúp em ạ, em cám ơn các anh :blink:

Tôi có lập 1 lisp vẽ dầm dơn giản 1 nhịp, bạn có thể dựa vào đó phát triển thêm
Đính kèm file lisp của 1 dầm đơn giản 1 nhịp chỉ nhập số liệu, tự động vẽ, không cần bản vẽ mẫu
copy 2 file vào thư mục support của cad upload beam11.lsp-> đánh lệnh beam

http://www.cadviet.c...pfiles/BEAM.rar
  • 0

#2278 dienlicogi17

dienlicogi17

    biết pan

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

Đã gửi 03 July 2009 - 05:52 PM

em chào các anh, em là người mới, các anh giúp cho em bài này đc o ạ? :s_big:

THIẾT KẾ DẦM SÀN CƠ BẢN
TỰ ĐỘNG TÍNH TOÁN
VẼ MẶT CẮT DẦM
CHO KÍCH THƯỚC DẦM: CHIỀU DÀI DẦM, CHIỀU RỘNG, CHIỀU CAO
CHIỀU DÀI CÓ THỂ TỪ: 3000-6000
RỘNG: 220
CAO : TỰ ĐỘNG TÍNH=1/10-1/15 CỦA CHIỀU DÀI LÀM TRÒN ĐẾN 50: 250 – 300

TÍNH TOÁN : THỂ TÍCH BÊ TÔNG -> KHỐI LƯỢNG VẬT LIỆU
- ĐÁ 1*2
- CÁT
- XI MĂNG
vẽ bảng thông kê thép
STT Hình dạng , KT ø chiều dài 1 thanh số lượng tổng dài tổng Kg
1 ________ 16
18
20
nt dài + 2* mỏ
2


3 6 2(rộng + cao) + 100 =dài dầm/200


mong các anh giúp em ạ, em cám ơn các anh :blink:

http://www.cadviet.c...?showtopic=5162
vào đây xem thử. đã có trên diễn đàn rồi.
  • 0
Hồng Diễn - Mobile: 0936.458.268 - Email: Dienlicogi17@gmail.com

#2279 duongthanh85

duongthanh85

    biết vẽ pline

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

Đã gửi 04 July 2009 - 02:36 AM

Các huynh cho đệ 1 lisp như sau:
- Tạo 1 file text tên là C:\Ketqua.txt nếu chưa có; ghi ở chế độ ghi thêm (thêm dòng vào nội dung có sẵn).
- Chọn đối tượng text thứ nhất, ghi giá trị text này vào file C:\Ketqua.txt và thêm dấu TAB (chưa xuống dòng).
- Chọn đối tượng text thứ 2, ghi giá trị text thứ 2 này vào cùng dòng với giá trị text thứ nhất và thêm dấu TAB.
- Chọn 1 loạt đối tượng là Line, Pline... ghi tổng giá trị chiều dài và xuống dòng (gọi hàm tính tổng chiều dài các đường- Lisp trên cadviet).

Mỗi lần thực hiện lệnh lại ghi thêm 1 dòng.


VD:
có 02 đối tượng text là "Diem 1" và "Diem 2", giữa 2 đối tượng text này có vài đường thẳng.
Khi gõ lệnh như trên sẽ ghi thêm vào file text 1 dòng như sau:

Diem 1 Diem 2 128.5



Mong các huynh giúp đỡ, đệ đã đọc thử bài liên kết Acad và Txt cũng như mã nguồn lisp tính tổng các đối tượng được chọn rồi như vẫn không làm được. :s_big: :blink:
  • 0
Dương Đình Thành


EDI.com.vn
Mobile : 0903.269.830
duongdinhthanh@edi.com.vn



Thiết kế thi công: Trạm biến áp, đường dây, cáp ngầm, hạ ngầm đường dây, điện tòa nhà, hệ điện thông minh ...

#2280 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 July 2009 - 10:02 AM

:cheers:Cám ơn Tue, Mình đã chạy thử và được rồi. Nhưng cậu giúp mình vẫn để lại chế độ chọn chiều cao chữ nhé. Còn Text thì cậu lấy theo style hiện hành phải không? Còn text cậu cố giúp mình căn vào giữa hàng như bản vẽ mình gửi cho cậu nhé. Cả chiều rộng của hàng text cũng như trong bản vẽ mình gửi cho cậu ý. Chứ thế này cũng hơi to. Mình gửi lại cậu xem nhé!
http://www.cadviet.c.../file_mau_3.dwg
Mình định nhờ cậu giúp mình đoạn lệnh loại bỏ những đường gióng có cao độ gần như nhau. Khoảng cao độ chênh lệch để loại bỏ do người vẽ tự chọn được. Như mặt cắt thứ 3 mình cũng đã loại bỏ bớt trông sẽ đỡ chen dày vào nhau. Nhưng chắc như thế hơi phức tạp. Mình sẽ loại bỏ thủ công vậy.
Cám ơn cậu thật nhiều! Thanh kiu trước nhé. :blink:

1. Không thể loại bỏ những đường gióng có cao độ gần như nhau được. Vì khi chạy Lisp sẽ hiểu là chạy từ đầu đỉnh đến cuối đỉnh của Pline
Lisp này Tue_NV đã chỉnh lại :

(defun c:SCD(/ oldos olddim sty d h mss gtmss PL pr tp po po2 pot LA1 po3 po4 po5 kc kcle pott)
;copyright by Tue_NV
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)

(setq olddim (getvar "dimzin"))

(setvar "dimzin" 0)

(setq sty (getvar "textstyle")
d (tblsearch "style" sty))



(setq mss (car(entsel "\n Chon mat so sanh :")))
(HLI mss)
(setq gtmss (getreal "\n Nhap gia tri mat so sanh :"))

(setq PL (car (entsel "\n Chon Pline :")))
(HLI PL)
(setq h (getdist "\n Nhap chieu cao text :"))
(setq pr (vlax-curve-getEndParam PL) i 1)


(setq tp (getint "\n So chu so thap phan :"))


(setq po (vlax-curve-getPointAtParam PL 0))

(setq po2 (vlax-curve-getClosestPointTo mss po))


(setq pot (list (car po2) (- (cadr po2) (/ h 2)) 0))

(command "offset" (* h 6) mss pot "")
(setq LA1 (entlast))
(setq po4 (vlax-curve-getClosestPointTo LA1 po2))
(setq po5 (list (car po4) (- (cadr po4) (* h 5)) 0))

(command "offset" (* h 11) mss pot "")


(setq kc (+ (distance po po2) gtmss))

(Command "line" po po2 "")
(Command "line" po4 po5 "")

(wtxt (rtos kc 2 tp) pot (/ pi 2) h)

(while (<= i pr)

(setq po (vlax-curve-getPointAtParam PL i))

(setq po3 (vlax-curve-getClosestPointTo mss po))
(setq po4 (vlax-curve-getClosestPointTo LA1 po3))
(setq po5 (list (car po4) (- (cadr po4) (* h 5)) 0))

(setq kc (+ (distance po po3) gtmss))
(setq kcle (distance po2 po3))

(setq pot (list (car po3) (- (cadr po3) (/ h 2)) 0))
(setq pott (list (- (car po3) (/ kcle 2)) (- (cadr po3) (* h 7)) 0))

(Command "line" po po3 "")
(Command "line" po4 po5 "")
(wtxt (rtos kc 2 tp) pot (/ pi 2) h)
(wtxt (rtos kcle 2 tp) pott (/ pi 2) h)
(setq po2 po3)
(setq i (1+ i))

)

(setvar "dimzin" olddim)
(setvar "osmode" oldos)
(command "undo" "end")
(Princ)
)

;
(defun HLI(enT)
(sssetfirst (ssadd enT (ssadd)) (ssadd enT (ssadd)))
)
;
(defun wtxt (txt p ang h / sty)
(setq sty (getvar "textstyle"))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 11 p)
(cons 72 2) (cons 73 2) (cons 50 ang) (cons 40 h) (cons 41 0.8))
)
)


PS : Tue_NV không thích gọi bằng "cậu". Hãy tôn trọng


@Xuantran : Tue_NV không hiểu file của bạn bị lỗi gì nữa. Bạn hãy lấy file này của Tue_NV test thử.
File test thử đây : http://www.cadviet.com/upfiles/Coc.dwg
Chiều cao chữ bạn chọn khoảng bằng 2 tronh hình vẽ thôi nhé
:s_big:
  • 4