Đế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

#1001 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 25 August 2008 - 01:52 PM

Bác Hoanh ơi giúp e với em có câu lệnh này
(defun c:sb ()(ssget)(command "draworder" "p" "" "b" ""))
Bác giúp e thêm 1 mã lệnh để sao cho khi ta gõ lệnh sb nó sẽ tự động chon tất cả đối tượng hatch trong bản vẽ với
Cảm ơn bác trước nhé ......... help me.......


(ssget) của Bạn thay bằng cái này (ssget "X" '((0 . "Hatch")) )
  • 1

#1002 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 25 August 2008 - 02:17 PM

bác nào giúp em với. Em đang cần 1 lisp với nội dung sau
Giả sử bản vẽ ta có 4 lớp : 1,2,3,4
e muốn có 1 lisp có thể mặc định lớp 2 luôn nằm trên lớp 1,3,4
Nôm na e muốn có 1 lisp quản lý hệ thống layer sao cho ta có thể mặc định 1 lớp luôn nằm trên hay nằm dưới các lớp khác giống như quản lý layer trong shop đó các bác
Mong các bác cao thủ giúp em với...........hic hic

AutoCAD không quản lý layer theo kiểu của PhotoShop hay CorelDraw. Trong AutoCAD, cái nào sinh ra sau được nằm trên, bất kể ở layer nào. User chỉ có thể hoán đổi thứ tự ấy cho một nhóm đối tượng cụ thể nào đó đã được chỉ định bằng lệnh "draworder". Yêu cầu của bạn không thể thực hiện được về nguyên tắc!
Đúng hơn, có thể thực hiện được cho các đối tượng đã tồn tại trên bản vẽ bằng lisp sau:
(defun C:FR( / lay ss)
(setq
lay (cdr (assoc 8 (entget (car (entsel "\nChon doi tuong mau:")))))
ss (ssget "X" (list (cons 8 lay)))
)
(command "draworder" ss "" "f")
)

Lệnh FR, chọn 1 đối tượng bất kỳ -> toàn bộ các đối tượng đang có trong bản vẽ, cùng layer với đối tượng vừa chọn sẽ nhảy lên trên. Nhưng những đối tượng mới, được tạo ra kể từ đó về sau, vẫn theo quy luật "sinh ra sau được nằm trên" như đã nói.
  • 0

#1003 thiennvpecc1

thiennvpecc1

    biết vẽ line

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

Đã gửi 26 August 2008 - 08:27 AM

Trong hộp thoại, khi tính toán xong các giá trị đầu vào trong các ô thường mất đi, Làm cách nào để khi tính toán xong thi các giá trị đó vẫn được lưu lại trong ô tính toán không nhỉ (cho đỡ phải nhập lại từ đầu mà). Bác Hoang xem giúp em được không nhỉ.
  • 0

#1004 dvdcad

dvdcad

    biết vẽ arc

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

Đã gửi 26 August 2008 - 05:23 PM

làm thế nào để mờ đi một lệnh trong một menu.

ví dụ: làm mờ lệnh LINE trong menu Draw
  • 0

#1005 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 28 August 2008 - 01:29 AM


(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 "<NOT"))[/color]
(filterchondttheomau
(maucuadoituong
(car (entsel "\nHay pick vao doi tuong de chon mau: ")
)
)
)
[color="#FF0000"](list (cons -4 "NOT>")))[/color]
)
)
[b][color="#FF0000"] ssadd[/color][/b]
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count)
)
[b][color="#FF0000"] (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))[/color][/b]
(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>"))
)
)
)

(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))

Bác NguyenHoanh ơi giải thích gùm em hàm logand dùng trong trường hợp này có tác dụng như thế nào? Vì theo em hiểu hàm Logand là "and ở dạng nhị phân các số nguyên".
Và hàm ssadd đứng 1 mình ( không nằm trong cặp dấu "()" ) có ý nghĩa như thế nào?
Em đọc lisp ẩn đối tượng của bác có 2 phần trên chưa hiểu. Bác giúp em nhé. Cám ơn bác :lol:
  • 0

#1006 anhlylyhuynh

anhlylyhuynh

    biết zoom

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

Đã gửi 28 August 2008 - 10:30 AM

Chào Bác NguyenHoanh
Nhờ bác viết dùm đọan code vẽ mặt cắt ngang từ file bình đồ điểm là file cad có các điểm text 2d
Xin cám ơn!
  • 0

#1007 anhlylyhuynh

anhlylyhuynh

    biết zoom

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

Đã gửi 28 August 2008 - 10:31 AM

Chào Bác NguyenHoanh
Nhờ bác viết dùm đọan code vẽ mặt cắt ngang từ file bình đồ điểm là file cad có các điểm text 2d
Xin cám ơn!
  • 0

#1008 uct_0978333594

uct_0978333594

    biết vẽ polygon

  • Members
  • PipPip
  • 77 Bài viết
Điểm đánh giá: 42 (tàm tạm)

Đã gửi 28 August 2008 - 10:59 AM

Xin chào cả nhà! Các bác cho em hỏi trên diễn đàn đã có lisp nào chuyển được các text đang ở chữ thường thành chữ hoa không ạ, Em tìm kiếm nhưng mà không có.
Các bác có thể viết cho Em một cái lisp mà chuyển từ chữ thường thành chữ hoa và ngược lại được không. Tại Em phải sửa bản vẽ mà toàn ghi chú bằng chữ thường thôi muốn chuyển thành chữ hoa mà phải gõ lại thì toi mất.
Cám ơn các Bác nhiều !
  • 0
Hình đã gửi

#1009 doanduyhung

doanduyhung

    biết vẽ spline

  • Members
  • PipPip
  • 90 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 28 August 2008 - 11:14 AM

Vào express -> text -> change text case chọn các text cần chuyển....
Hay bạn dùng lệnh tcase
Luu ý: phải cài express vào cad trước
  • 0

#1010 anhlylyhuynh

anhlylyhuynh

    biết zoom

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

Đã gửi 28 August 2008 - 11:15 AM

Chào các bác
Nhờ các bác viết dùm đọan code vẽ mặt cắt ngang từ file bình đồ điểm là file cad có các điểm text 2d
Xin chân thành cám ơn!


  • 0

#1011 anhlylyhuynh

anhlylyhuynh

    biết zoom

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

Đã gửi 28 August 2008 - 11:22 AM

Chào cả nhà
Nhờ các bác viết dùm đọan code vẽ mặt cắt ngang từ file bình đồ điểm là file cad có các điểm text 2d
Xin chân thành cám ơn!
  • 0

#1012 uct_0978333594

uct_0978333594

    biết vẽ polygon

  • Members
  • PipPip
  • 77 Bài viết
Điểm đánh giá: 42 (tàm tạm)

Đã gửi 28 August 2008 - 11:43 AM

Vào express -> text -> change text case chọn các text cần chuyển....
Hay bạn dùng lệnh tcase
Luu ý: phải cài express vào cad trước

Cam ơn Bác nhiều!
  • 0
Hình đã gửi

#1013 Cuti

Cuti

    biết zoom

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

Đã gửi 28 August 2008 - 11:57 AM

Chào Bác NguyenHoanh
Nhờ bác viết dùm đọan code vẽ mặt cắt ngang từ file bình đồ điểm là file cad có các điểm text 2d
Xin cám ơn!


bạn nói rõ hơn ý của bạn ! bạn dùng cho tính toán khối lượng nạo vét, hay làm gì ?!
  • 0

#1014 anhlylyhuynh

anhlylyhuynh

    biết zoom

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

Đã gửi 28 August 2008 - 12:15 PM

bạn nói rõ hơn ý của bạn ! bạn dùng cho tính toán khối lượng nạo vét, hay làm gì ?!


Mình dùng để vẽ mặt cắt ngang hiện trạng theo vết cắt (vết cắt là đường line hoặc pline) trên bình đồ điểm (điểm là các text 2D)
Nhờ bạn giúp dùm! Thanks
  • 0

#1015 quangktw

quangktw

    Chưa sử dụng CAD

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

Đã gửi 28 August 2008 - 01:23 PM

Bạn có thể post yêu cầu về autolisp ở topic này.

bạn nào viết cho mình lisp mà thay cái phím esc -->phím chuột phải (right click)được ko.chuột phải mình ít khi dùng mà với tay lên cái phím esc xa qua. heee.cam ơn trước
  • 0

#1016 dh2xd

dh2xd

    biết vẽ pline

  • Members
  • PipPip
  • 65 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 28 August 2008 - 03:59 PM

Các bác ơi em có đoạn mấ này
(defun c:3 ()
(ssget)
(command "CHANGE" "P" "" "p" "la" "vat lieu" "")
)
Tác dụng là nó chuyển toàn bộ đối tượng được chọn sang layer vat lieu
Em muốn các bác giúp e thêm 1 đoạn mã để khi ấn lệnh nó chọn toàn bộ hatch trong bản vẽ đồng thời chuyển chúng sang layer vat lieu luôn
Nếu được các bác khuyến mãi e đoạn mã tương tự nhưng đối tượng không phải là hatch mà là toàn bộ dim trong bản vẽ
Em trân thành cảm ơn các bác nhiều
  • 0

#1017 dh2xd

dh2xd

    biết vẽ pline

  • Members
  • PipPip
  • 65 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 28 August 2008 - 04:35 PM

Sorry các bác sau khi đọc xong đoạn mã này của bác tien2005

(ssget) của Bạn thay bằng cái này (ssget "X" '((0 . "Hatch")) )

em đã ngộ ra được chân lý và làm được rồi
đã làm phiên các bác
Cảm ơn bác tien2005 nhiều nhiều
  • 0

#1018 chutuocttm

chutuocttm

    biết pan

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

Đã gửi 28 August 2008 - 07:24 PM

Bác Ngọc Quan õi !xin bác giúp cho em cái lisp tạo layer của bác !Em cần nó lắm ! nhýng tìm hoài mà ko thấy ! khi post bài thì ko có ai trả lời ! hix ! làm õn nha bác ! xin bác giúp cho !
  • 0

#1019 meohoang

meohoang

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 811 Bài viết
Điểm đánh giá: 342 (khá)

Đã gửi 28 August 2008 - 10:53 PM

Trong hộp thoại, khi tính toán xong các giá trị đầu vào trong các ô thường mất đi, Làm cách nào để khi tính toán xong thi các giá trị đó vẫn được lưu lại trong ô tính toán không nhỉ (cho đỡ phải nhập lại từ đầu mà). Bác Hoang xem giúp em được không nhỉ.

Ý bác nói về hộp thoại nào trong Cad?
  • 0

#1020 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 29 August 2008 - 07:08 AM

Bác Ngọc Quan õi !xin bác giúp cho em cái lisp tạo layer của bác !Em cần nó lắm ! nhýng tìm hoài mà ko thấy ! khi post bài thì ko có ai trả lời ! hix ! làm õn nha bác ! xin bác giúp cho !



(DEFUN CREATELAYER(laname lacolor lalt);; Tao mot layer moi (tenlayer mauyer duongnetlayer)
(if (tblsearch "LAYER" laname);; Kiem tra layer da ton tai
(princ (strcat "Layer" laname " da ton tai")
(if (tblsearch "LTYPE" ltname);if linetype exsists
(command "._Layer" "_Make" laname "_Color" lacolor laname "_LT" ltname laname "")
(command "._Layer" "_Make" laname "_Color" lacolor laname "_LT" "Continuous" laname "")
)
)
)

  • 0