Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp vẽ đai móc


  • Please log in to reply
30 replies to this topic

#1 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 31 July 2011 - 06:34 PM

Công việc của mình thường phải vẽ nhiều đai móc như file đính kèm.Mong các bác viết giùm lisp vẽ giùm e.Chân thành cảm ơn trước.
http://www.cadviet.c...drawing1_74.dwg
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 31 July 2011 - 08:24 PM

Bài trước bị xóa vì bạn vi phạm nội quy. Mình nghi rằng bài này cũng tiếp tục mất thôi :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 31 July 2011 - 09:25 PM

Mình biết vi phạm rồi.Nhờ bạn thêm chữ yêu cầu vô trước giùm,vì giờ không thể sửa tiêu đề được.
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 31 July 2011 - 09:58 PM

Này thì yêu cầu của Hugo :)
Lệnh : moc
(defun c:moc ()
(entmake '(
(0 . "LWPOLYLINE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbPolyline")
(90 . 5)
(70 . 0)
(43 . 0.0)
(38 . 0.0)
(39 . 0.0)
(10 20.06813351996104 4.918288816158338)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 -4.515341367645868 96.66506612330090)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 196.7878331603434 96.66506612330090)
(40 . 0.0)
(41 . 0.0)
(42 . -0.955352130863200)
(10 195.4199538710784 66.72756612330090)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 165.4199538710784 66.72756612330090)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)))
(princ)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 31 July 2011 - 10:22 PM

Này thì yêu cầu của Hugo :)
Lệnh : moc

(defun c:moc ()
(entmake '(
(0 . "LWPOLYLINE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbPolyline")
(90 . 5)
(70 . 0)
(43 . 0.0)
(38 . 0.0)
(39 . 0.0)
(10 20.06813351996104 4.918288816158338)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 -4.515341367645868 96.66506612330090)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 196.7878331603434 96.66506612330090)
(40 . 0.0)
(41 . 0.0)
(42 . -0.955352130863200)
(10 195.4199538710784 66.72756612330090)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 165.4199538710784 66.72756612330090)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)))
(princ)
)

Xin lỗi bạn,phiền bạn làm cho hình này scale lên 5 lần giùm với vì bạn viết bằng cách này mình không hiểu để sửa và bạn thêm giùm mình chọn điểm chèn và chỗ góc 75 độ bo góc có bán kính 75 luôn nha,nếu muốn gán cho nó là layer DAI MOC thì làm như thế nào?.Thanks.
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 August 2011 - 07:20 PM

Để scale mà không thay đổi các thứ, mình bắt buộc đóng block. Nếu bạn muốn nó to ngay từ đầu thì hãy dùng lệnh Ctrl C , Ctrl V cho nhanh :)
(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
(command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
(setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
(entmakex '(
(0 . "LWPOLYLINE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbPolyline")
(90 . 5)
(70 . 0)
(43 . 0.0)
(38 . 0.0)
(39 . 0.0)
(10 24.64817964888254 -91.74677730714256)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 0.064704761275634 0.0)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 201.3678792892649 0.0)
(40 . 0.0) (41 . 0.0)
(42 . -0.955352130863200)
(10 200.0000000000000 -29.93750000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 170.0000000000000 -29.93750000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0))
)
(ssadd)
)
ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
ss)
blkName "#caiblocknaytenphaidai"
)
(if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 5 pt "")
(princ)
)
(command ".erase" ss "")
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 01 August 2011 - 07:34 PM

Để scale mà không thay đổi các thứ, mình bắt buộc đóng block. Nếu bạn muốn nó to ngay từ đầu thì hãy dùng lệnh Ctrl C , Ctrl V cho nhanh :)

(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
(command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
(setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
(entmakex '(
(0 . "LWPOLYLINE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbPolyline")
(90 . 5)
(70 . 0)
(43 . 0.0)
(38 . 0.0)
(39 . 0.0)
(10 24.64817964888254 -91.74677730714256)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 0.064704761275634 0.0)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 201.3678792892649 0.0)
(40 . 0.0) (41 . 0.0)
(42 . -0.955352130863200)
(10 200.0000000000000 -29.93750000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 170.0000000000000 -29.93750000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0))
)
(ssadd)
)
ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
ss)
blkName "#caiblocknaytenphaidai"
)
(if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 5 pt "")
(princ)
)
(command ".erase" ss "")
)

Bạn kiểm tra lại giùm nó vẫn chưa gán cho đai móc này thành layer daimoc và vẫn chưa cho nhập điểm chền.Mặc dù trong lisp bạn đã có 2 mục này.Mình muốn tất cả đai này lớn hơn 5 lần để thể hiện nó đang ở tỉ lệ 1/20 không cần phải block đâu bạn,thí dụ đường xiên trong lisp dài 95 giờ mình muốn nó dài 475.....Nếu làm vậy khó thì bạn xem lại giùm mình gán layer cho nó và điểm chèn là được,có gì mình dùng lệnh scale nó lên sau.Cảm ơn sự nhiệt tình của bạn rất nhiều.
  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 August 2011 - 08:37 PM

Vậy thì thế này vậy :


;; Revision :08/01/2011 @18:45
(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
(command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
(setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
(entmakex '(
(0 . "LWPOLYLINE") (100 . "AcDbEntity")
(67 . 0) (8 . "daimoc") (100 . "AcDbPolyline")
(90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0)
(10 122.9820791993101 -458.7338865357128)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 0.064704761275626 0.0)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 1006.580577401222 0.0)
(40 . 0.0) (41 . 0.0)
(42 . -0.955352130863200)
(10 999.7411809548973 -149.6875000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 849.7411809548973 -149.6875000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0)))
(ssadd)
)
ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "daimoc") (100 . "AcDbDimension")
(10 0.043032775612801 0.080880951594580 0.0)
(11 181.8338805950091 -139.4763941999169 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5)
(72 . 1) (41 . 1.0) (42 . 1.308996938995746)
(73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0)
(54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 -0.258819045102541 0.0 0.0)
(14 999.7411809548973 0.0 0.0)
(15 122.9820791993101 -458.7338865357128 0.0)
(16 147.3370084311220 -175.5122969881651 0.0)
(40 . 0.0) (50 . 0.0)))
ss)
blkName "#caiblocknaytenphaidai"
)
(if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 5 pt "")
(command "._explode" (entlast))
)
(command ".erase" ss "")
(princ)
) ; end eMaker

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 01 August 2011 - 08:44 PM

2 vấn đề đã đưọc rồi nhưng bạn xem lại giùm sao vẫn chưa cho chọn điểm chèn.Thanks.
  • 0

#10 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 August 2011 - 09:06 PM

Srr bạn, mình có phần kém thông minh nên không thông ý đồ của bạn được. Chọn điểm chèn là làm cái j đây nhỉ :excl:
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#11 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 01 August 2011 - 09:20 PM

Srr bạn, mình có phần kém thông minh nên không thông ý đồ của bạn được. Chọn điểm chèn là làm cái j đây nhỉ :excl:

Là khi mình click chuột ở đâu là cái đai móc đó nằm ngay điểm mình click,trong lisp của bạn cũng thấy dòng Chọn điểm chèn: Hình như nó không có tác dụng.Hiện tại khi đánh lệnh moc thì cái đai nó nằm ở vị trí nào trên màn hình vậy bạn?Mong bạn xem giúp.
  • 0

#12 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 August 2011 - 09:30 PM

Tất nhiên là nó ở cái điểm bạn kích rồi :blink:
Hay nhỉ :) Bạn vui lòng quay thao tác của bạn lại giúp mình được không ? Hoặc ấn F2 và chụp lại hộ mình.

Và trả lời giùm mình câu hỏi này :
2 câu trước :

Bạn kiểm tra lại giùm nó vẫn chưa gán cho đai móc này thành layer daimoc và vẫn chưa cho nhập điểm chền.Mặc dù trong lisp bạn đã có 2 mục này.Mình muốn tất cả đai này lớn hơn 5 lần để thể hiện nó đang ở tỉ lệ 1/20 không cần phải block đâu bạn,thí dụ đường xiên trong lisp dài 95 giờ mình muốn nó dài 475.....Nếu làm vậy khó thì bạn xem lại giùm mình gán layer cho nó và điểm chèn là được,có gì mình dùng lệnh scale nó lên sau.Cảm ơn sự nhiệt tình của bạn rất nhiều.



2 vấn đề đã đưọc rồi nhưng bạn xem lại giùm sao vẫn chưa cho chọn điểm chèn.Thanks.




Và câu sau :

Là khi mình click chuột ở đâu là cái đai móc đó nằm ngay điểm mình click,trong lisp của bạn cũng thấy dòng Chọn điểm chèn: Hình như nó không có tác dụng.Hiện tại khi đánh lệnh moc thì cái đai nó nằm ở vị trí nào trên màn hình vậy bạn?Mong bạn xem giúp.


2 cái đỏ đã có sao lại có cái xanh nhỉ ??? Bạn làm cách nào để check nếu không nhìn thấy nó ??????
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#13 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 01 August 2011 - 09:31 PM

Bạn kiểm tra lại giùm nó vẫn chưa gán cho đai móc này thành layer daimoc và vẫn chưa cho nhập điểm chền.Mặc dù trong lisp bạn đã có 2 mục này.Mình muốn tất cả đai này lớn hơn 5 lần để thể hiện nó đang ở tỉ lệ 1/20 không cần phải block đâu bạn,thí dụ đường xiên trong lisp dài 95 giờ mình muốn nó dài 475.....Nếu làm vậy khó thì bạn xem lại giùm mình gán layer cho nó và điểm chèn là được,có gì mình dùng lệnh scale nó lên sau.Cảm ơn sự nhiệt tình của bạn rất nhiều.

Hề hề hề,
Cái lisp này của bác ketxu hình như bị lỗi ở hàm :
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)

Nó luôn trả về nil tức là hổng tạo được đối tượng.
Do vậy hàm
(setq ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
ss))

luôn bị báo là: ; error: bad argument type: lentityp nil
Và do vậy lisp sẽ dừng lại không chạy nữa. Vì thế bạn sẽ không có được cái block "#caiblocknaytenphaidai" và do vậy lấy đâu ra điểm chèn.
Bạn hãy xóa các dòng code sau:
ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
ss)

và lưu lại file rồi chạy thử. Sẽ thấy nó ngon lành cành đào. Có điều cái block này sẽ không có cái dimension mà bác Ketxu muốn bổ xung vô.
Hề hề hề
@Bác Ketxu: Cái cách làm lisp này của bác cũng khá hay đó. Có điều là ... hơi khó mót.....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#14 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 01 August 2011 - 09:38 PM

Hề hề hề,
Cái lisp này của bác ketxu hình như bị lỗi ở hàm :
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)

Nó luôn trả về nil tức là hổng tạo được đối tượng.
Do vậy hàm
(setq ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
ss))

luôn bị báo là: ; error: bad argument type: lentityp nil
Và do vậy lisp sẽ dừng lại không chạy nữa. Vì thế bạn sẽ không có được cái block "#caiblocknaytenphaidai" và do vậy lấy đâu ra điểm chèn.
Bạn hãy xóa các dòng code sau:
ss
(ssadd
(entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0)
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)
(15 24.64817964888254 -91.74677730714256 0.0)
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
ss)

và lưu lại file rồi chạy thử. Sẽ thấy nó ngon lành cành đào. Có điều cái block này sẽ không có cái dimension mà bác Ketxu muốn bổ xung vô.
Hề hề hề

Bị lỗi như bác nói là chính xác nhưng khi xoá như bác chỉ thì chạy được nhưng hình tự động lớn hơn 5 lần so với yêu cầu.Nhờ bác và ketxu xem giúp e.
  • 0

#15 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 August 2011 - 10:01 PM

Bạn thay số 5 ở dòng này thành số 1

(command "-insert" blkName "s" 5 pt "")


Còn về chuyện tạo dim, mỗi máy mỗi khác, mình dùng 2008 chạy ngon lành, nên cũng k biết của bạn bị làm sao :unsure:
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 01 August 2011 - 10:41 PM

Cho mình hỏi tạo dim để làm gì vậy bạn?Nếu xoá những dòng bác Bình chỉ thì nó vẫn vẽ được cái đai móc đó theo yêu cầu và lisp này sẽ ngắn hơn.Mong bạn giải thích giùm mình ý nghĩa của các dòng xoá đi mới không bị lỗi như ở trên.Thanks.
  • 0

#17 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 August 2011 - 10:51 PM

Xin lỗi bạn,phiền bạn làm cho hình này scale lên 5 lần giùm với vì bạn viết bằng cách này mình không hiểu để sửa và bạn thêm giùm mình chọn điểm chèn và chỗ góc 75 độ bo góc có bán kính 75 luôn nha,nếu muốn gán cho nó là layer DAI MOC thì làm như thế nào?.Thanks.



Cho mình hỏi tạo dim để làm gì vậy bạn?Nếu xoá những dòng bác Bình chỉ thì nó vẫn vẽ được cái đai móc đó theo yêu cầu và lisp này sẽ ngắn hơn.Mong bạn giải thích giùm mình ý nghĩa của các dòng xoá đi mới không bị lỗi như ở trên.Thanks.

Mình nhiệt tình nhưng không đủ kiên nhẫn bạn ạ ^^
Dim 75 đó vỗn dĩ mình đâu muốn cho vào.

Ý nghĩa của các dòng xoá đi là bỏ cái đoạn mã tạo Dim đi
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#18 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 02 August 2011 - 08:58 AM

Mình nhiệt tình nhưng không đủ kiên nhẫn bạn ạ ^^
Dim 75 đó vỗn dĩ mình đâu muốn cho vào.

Ý nghĩa của các dòng xoá đi là bỏ cái đoạn mã tạo Dim đi

Xin lỗi bạn vì ngay từ đầu mình nói không rõ.Ý mình bo góc đó có bán kính 75 là như file đính kèm bên dưới.Lisp của bạn đúng là từ cad 2008 trở lên không bị lỗi như nói ở trên.Xin lỗi đã làm phiền bạn.Chân thành cảm ơn bạn.
http://www.cadviet.c...drawing1_75.dwg
  • 0

#19 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 August 2011 - 01:57 PM

Nếu từ đầu đã có cái file như bên dưới thì mọi người chẳng mất quá nhiều thời gian để xử lý bài toán của bạn rồi.

(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
(command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
(setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
(entmakex '(
(0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "daimoc")
(100 . "AcDbPolyline") (90 . 6) (70 . 0) (43 . 0) (38 . 0) (39 . 0)
(10 84.67697199678696 -429.3909937113676) (40 . 0) (41 . 0) (42 . 0)
(10 -12.94293644983736 -65.06853555834368) (40 . 0) (41 . 0) (42 . -0.493145426031304)
(10 59.5015005218429 29.3428928243452) (40 . 0) (41 . 0) (42 . 0)
(10 968.2754701986995 29.3428928243452) (40 . 0) (41 . 0) (42 . -0.9553521308632)
(10 961.4360737523748 -120.3446071756548) (40 . 0) (41 . 0) (42 . 0)
(10 811.4360737523748 -120.3446071756548) (40 . 0) (41 . 0) (42 . 0)))
(ssadd))
blkName "#caiblocknaytenphaidai"
)
(if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 1 pt "")
(command "._explode" (entlast))
)
(command ".erase" ss "")
(princ)
)

  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#20 Quang Duc Ha

Quang Duc Ha

    biết vẽ pline

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

Đã gửi 02 August 2011 - 03:59 PM

Thực sự em thấy anh Ketxu rất nhiệt tình. Cảm ơn anh rất nhiều (đã bấm thaks!)
  • 0