Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
CaoxuanChung

Nhờ các pro sửa lỗi Lisp giúp

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

Em có làm 1 cái lisp về mặt bích, e gặp phải 1 vấn đề đó là khi vẽ ra có 1 kích thước bị lệch so với kích thước nhập vào, mặc dù code lệnh của e thì thì theo e là đã đúng. em ko biết phải xử lí thế nào, vậy mong các pro chỉ giáo cho em ... 
Kích thước bị sai mà e nói ở trên là H và đôi khi cả D nữa (2 cái này phiền các bác mở file lisp để biết, D là đường kính bích, H là đường kính lỗ bulong)  ... nếu em nhập vào số lẻ ví dụ D = 175 mm thì khi vẽ ra đo lại chỉ còn lại 174 mm :( 
Còn 1 vấn đề nữa mà e cũng muốn hỏi, đó là khi e vẽ xong 1 mặt bích rồi, muốn vẽ cái thứ 2 với số liệu khác hay kể cả cái cũ thì nó xuất hiện lỗi, xuất hiện 3 hình trên màn hình, trong đó có 2 cái cùng 1 kích thước( trường hợp vẽ vs 1 số liệu mới), muốn ko xuất hiện lỗi ấy thì phải mở 1 cửa sổ cad mới và load lại file lisp, vậy làm sao để khắc phục đc hiện tượng đó? 

 

Dưới đây là file lisp mà e muốn hỏi các lỗi ... em xin cảm ơn 

 

http://www.mediafire.com/?r1x67bwct2e4qgf

 

còn đây là tiêu chuẩn bích, có hình vẽ để các bác xem 

 

http://www.mediafire.com/?z2y3ryyb0qt51cv

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 có làm 1 cái lisp về mặt bích, e gặp phải 1 vấn đề đó là khi vẽ ra có 1 kích thước bị lệch so với kích thước nhập vào, mặc dù code lệnh của e thì thì theo e là đã đúng. em ko biết phải xử lí thế nào, vậy mong các pro chỉ giáo cho em ... 

Kích thước bị sai mà e nói ở trên là H và đôi khi cả D nữa (2 cái này phiền các bác mở file lisp để biết, D là đường kính bích, H là đường kính lỗ bulong)  ... nếu em nhập vào số lẻ ví dụ D = 175 mm thì khi vẽ ra đo lại chỉ còn lại 174 mm :( 

Còn 1 vấn đề nữa mà e cũng muốn hỏi, đó là khi e vẽ xong 1 mặt bích rồi, muốn vẽ cái thứ 2 với số liệu khác hay kể cả cái cũ thì nó xuất hiện lỗi, xuất hiện 3 hình trên màn hình, trong đó có 2 cái cùng 1 kích thước( trường hợp vẽ vs 1 số liệu mới), muốn ko xuất hiện lỗi ấy thì phải mở 1 cửa sổ cad mới và load lại file lisp, vậy làm sao để khắc phục đc hiện tượng đó? 

 

Dưới đây là file lisp mà e muốn hỏi các lỗi ... em xin cảm ơn 

 

http://www.mediafire.com/?r1x67bwct2e4qgf

 

còn đây là tiêu chuẩn bích, có hình vẽ để các bác xem 

 

http://www.mediafire.com/?z2y3ryyb0qt51cv

Mình sai ở đâu nhỉ, nhập lisp bạn vô Cad chẳng thấy chạy gì cả nhưng nghe chừng là do lỗi của osmode thôi, tắt truy bắt điểm đi chắc là được đấy

Mà đúng là lỗi này rồi đó, bạn thêm vào dòng (setvar "osmode" 0) ngay sau dòng (defun bic...() nhé. Tuy mất truy bắt điểm nhưng nếu ưng rồi thì việc lưu và bắt lỗi mình thực hiện nốt cho

P/s trong lisp này của bạn có dòng (setq ABC (ssget "X")) sau đó dùng ABC để thực hiện (command ".mirror" ABC"" I J "") nghe không hợp lý 

Còn nữa nếu cần zoom đối tượng bick đã vẽ thì có lẽ lên chọn điểm window chứ nếu để "e" thì chỉ áp dụng khi một bản vẽ một bick được vẽ thôi(giống ABC ở trên)

Chỉnh sửa theo quansla
  • 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

Mình sai ở đâu nhỉ, nhập lisp bạn vô Cad chẳng thấy chạy gì cả nhưng nghe chừng là do lỗi của osmode thôi, tắt truy bắt điểm đi chắc là được đấy

Mà đúng là lỗi này rồi đó, bạn thêm vào dòng (setvar "osmode" 0) ngay sau dòng (defun bic...() nhé. Tuy mất truy bắt điểm nhưng nếu ưng rồi thì việc lưu và bắt lỗi mình thực hiện nốt cho

P/s trong lisp này của bạn có dòng (setq ABC (ssget "X")) sau đó dùng ABC để thực hiện (command ".mirror" ABC"" I J "") nghe không hợp lý 

Còn nữa nếu cần zoom đối tượng bick đã vẽ thì có lẽ lên chọn điểm window chứ nếu để "e" thì chỉ áp dụng khi một bản vẽ một bick được vẽ thôi(giống ABC ở trên)

A xin lỗi mình không đọc kỹ yêu cầu của bạn rồi, nếu bạn để ý hai dòng (ssget) và (mirro) kia thì đã không xảy ra sự khó chịu như bạn đã trình bày. Theo ý mình thì việc bạn sử dụng (ssget "x" ) là sai, sau đó dẫn đến tất cả các lỗi kéo theo như bạn trình bày

Nói đơn giản thì tham số "x" theo sau hàm "ssget" mang ý nghĩa là chọn tất cả các đối tượng trên bản vẽ. Với cách này thì sau đó nếu bạn dùng đối tượng để Mirro là ABC (đã được gán là chọn tất cả các đối tượng trên bản vẽ) thì đương nhiên khi Mirror sẽ bị như bạn đang mắc phải

Để khắc phục thì hiện tại bạn đang sử dụng cách buộc phải mở file Dwg mới, đây đương nhiên là một cách "chuẩn" rồi, vì khi đó ở bản vẽ mới không có gì ngoài các đối tượng được vẽ bằng Code lisp bạn viết.

Cách khắc phục thứ hai là sửa Code. Theo ý mình bạn nên sửa thành

  1. Để khắc phục lúc vẽ được lúc không vẽ được cần có việc lưu và khôi phục, bắt lỗi "ESC" trong lisp, (sẽ khắc phục luôn vẽ sai. 175/174/171.33)
  2. Không dùng Mirror nữa lấy thêm một loạt các điểm nữa mà vẽ hoặc chọn cách lối điểm khác
  3. Nếu dùng Entmake lisp sẽ chạy nhanh hơn và không sợ dính phải lỗi truy bắt điểm
  4. Thay "zoom" "e" bằng "zoom" "w" và p1,p1 hợp lý hơn
  • 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

Nếu LISP của bạn được một anh chị nào trong diễn đàn viết hộ một hàm con có tác dụng gán giá trị theo trật tự thì sẽ gọn đi nhiều lắm.

Hàm con có nội dung như sau:

 

Có sẵn: các danh sách có cùng độ dài

(setq list1 (list  "10"    "15"    "20"    "25"    "32"    "40"    "50"    "65"    "80"    "100"))

(setq list2 (list  "a"      "b"      "c"      "d"      "e"      "f"       "g"      "h"      "i"        "j"     ))

(setq list3 (list  "1"      "5"      "4"      "3"      "6"      "7"      "9"      "2"      "8"      "0"    ))

.................................................................................................................................

 

Yêu cầu: nếu biến a1 nhận giá trị thứ i (i=1÷(length list1)) thì đồng thời:

    1. Gán cho biến a2 nhận giá trị thứ i trong list2

    2. Gán cho biến a3 nhận giá trị thứ i trong list3

        ......................................................................

 

Cụ thể: nếu a1 = 20 thì gán cho: a2 = c và a3 = 4 (i = 3)

 

Nếu có được hàm con này, bạn sẽ làm gọn và sạch hơn nhiều, mà việc kiểm tra cũng như sửa lại sau này cũng dễ dàng hơn rất nhiều.

@ Spam: Vấn đề này hình như em nhớ có đề cập đến trong diễn đàn mình rồi, mà em tìm không thấy, mong các Mem giúp cho vì SN chỉ cố gắng được với danh sách 4 phần tử mà thôi!

@ CaoxuanChung: trong mỗi nhánh hàm cond bạn thừa hàm progn!

  • 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

Nếu LISP của bạn được một anh chị nào trong diễn đàn viết hộ một hàm con có tác dụng gán giá trị theo trật tự thì sẽ gọn đi nhiều lắm.

Hàm con có nội dung như sau:

 

Có sẵn: các danh sách có cùng độ dài

(setq list1 (list  "10"    "15"    "20"    "25"    "32"    "40"    "50"    "65"    "80"    "100"))

(setq list2 (list  "a"      "b"      "c"      "d"      "e"      "f"       "g"      "h"      "i"        "j"     ))

(setq list3 (list  "1"      "5"      "4"      "3"      "6"      "7"      "9"      "2"      "8"      "0"    ))

.................................................................................................................................

 

Yêu cầu: nếu biến a1 nhận giá trị thứ i (i=1÷(length list1)) thì đồng thời:

    1. Gán cho biến a2 nhận giá trị thứ i trong list2

    2. Gán cho biến a3 nhận giá trị thứ i trong list3

        ......................................................................

 

Cụ thể: nếu a1 = 20 thì gán cho: a2 = c và a3 = 4 (i = 3)

 

Nếu có được hàm con này, bạn sẽ làm gọn và sạch hơn nhiều, mà việc kiểm tra cũng như sửa lại sau này cũng dễ dàng hơn rất nhiều.

@ Spam: Vấn đề này hình như em nhớ có đề cập đến trong diễn đàn mình rồi, mà em tìm không thấy, mong các Mem giúp cho!

cái này đúng là 1 ý tưởng hay ^_^ 

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

 

A xin lỗi mình không đọc kỹ yêu cầu của bạn rồi, nếu bạn để ý hai dòng (ssget) và (mirro) kia thì đã không xảy ra sự khó chịu như bạn đã trình bày. Theo ý mình thì việc bạn sử dụng (ssget "x" ) là sai, sau đó dẫn đến tất cả các lỗi kéo theo như bạn trình bày

Nói đơn giản thì tham số "x" theo sau hàm "ssget" mang ý nghĩa là chọn tất cả các đối tượng trên bản vẽ. Với cách này thì sau đó nếu bạn dùng đối tượng để Mirro là ABC (đã được gán là chọn tất cả các đối tượng trên bản vẽ) thì đương nhiên khi Mirror sẽ bị như bạn đang mắc phải

Để khắc phục thì hiện tại bạn đang sử dụng cách buộc phải mở file Dwg mới, đây đương nhiên là một cách "chuẩn" rồi, vì khi đó ở bản vẽ mới không có gì ngoài các đối tượng được vẽ bằng Code lisp bạn viết.

Cách khắc phục thứ hai là sửa Code. Theo ý mình bạn nên sửa thành

  1. Để khắc phục lúc vẽ được lúc không vẽ được cần có việc lưu và khôi phục, bắt lỗi "ESC" trong lisp, (sẽ khắc phục luôn vẽ sai. 175/174/171.33)
  2. Không dùng Mirror nữa lấy thêm một loạt các điểm nữa mà vẽ hoặc chọn cách lối điểm khác
  3. Nếu dùng Entmake lisp sẽ chạy nhanh hơn và không sợ dính phải lỗi truy bắt điểm
  4. Thay "zoom" "e" bằng "zoom" "w" và p1,p1 hợp lý hơn

bạn nhắc tới hàm SSGET mình mới nhớ ra, chẳng trách nó vẽ ra nhiều hình sau khi vẽ hình thứ nhất. cái này thì mình đã hiểu đc bản chất ... nhưng còn cái sai số thì mình vẫn chưa hiểu lắm ở cái mục 1. mà bạn nói, mong bạn nói rõ hơn để mình hiểu và sửa đc code cho đúng ... 

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ưng còn cái sai số thì mình vẫn chưa hiểu lắm ở cái mục 1. mà bạn nói, mong bạn nói rõ hơn để mình hiểu và sửa đc code cho đúng ... 

Có lẽ do các bắt điểm thường trú làm cho LISP của bạn bị sai số

 

Đầu tiên bạn hãy thiết đặt:

(setvar  "CMDECHO"   0)

(setq osm  (getvar "OSMODE")

         cla    (getvar "CLAYER"  ))

(setvar  "OSMODE"   0)

 

Sau khi kết thúc bạn bổ xung vào:

(setvar  "CMDECHO"  1    )

(setvar  "OSMODE"    osm)

(setvar  "CLAYER"      cla )

(setvar  "OSMODE"   osm)
(setvar  "CLAYER"       cla)

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

Nếu LISP của bạn được một anh chị nào trong diễn đàn viết hộ một hàm con có tác dụng gán giá trị theo trật tự thì sẽ gọn đi nhiều lắm.

Hàm con có nội dung như sau:

 

Có sẵn: các danh sách có cùng độ dài

(setq list1 (list  "10"    "15"    "20"    "25"    "32"    "40"    "50"    "65"    "80"    "100"))

(setq list2 (list  "a"      "b"      "c"      "d"      "e"      "f"       "g"      "h"      "i"        "j"     ))

(setq list3 (list  "1"      "5"      "4"      "3"      "6"      "7"      "9"      "2"      "8"      "0"    ))

.................................................................................................................................

 

Yêu cầu: nếu biến a1 nhận giá trị thứ i (i=1÷(length list1)) thì đồng thời:

    1. Gán cho biến a2 nhận giá trị thứ i trong list2

    2. Gán cho biến a3 nhận giá trị thứ i trong list3

        ......................................................................

 

Cụ thể: nếu a1 = 20 thì gán cho: a2 = c và a3 = 4 (i = 3)

 

Nếu có được hàm con này, bạn sẽ làm gọn và sạch hơn nhiều, mà việc kiểm tra cũng như sửa lại sau này cũng dễ dàng hơn rất nhiều.

@ Spam: Vấn đề này hình như em nhớ có đề cập đến trong diễn đàn mình rồi, mà em tìm không thấy, mong các Mem giúp cho vì SN chỉ cố gắng được với danh sách 4 phần tử mà thôi!

@ CaoxuanChung: trong mỗi nhánh hàm cond bạn thừa hàm progn!

(progn
  (setq li (list))
  (setq li1 '(1  2  3  4)
	li2 '(x1 y1 z1 t1)
	li3 '(x2 y2 z2 t2))
  (mapcar
    '(lambda (x y z)
       (setq li (append li  (list (list x y z)))))
    li1
    li2
    li3)
  li
  )

 

Kiểu như này này, nhưng nếu các x1,x2,y1,y2 muốn thay bằng "string" thì cần áp dụng khác, còn trong ví dụ chủ pic thì các số liệu hoàn toàn là kiểu số có lẽ chỉ cần thay vào là được

P/s Hix ẩu quá, không có ứng dụng thực tế, Srr mọi người để suy nghĩ thêm đã

  • 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

 

(progn
  (setq li (list))
  (setq li1 '(1  2  3  4)
	li2 '(x1 y1 z1 t1)
	li3 '(x2 y2 z2 t2))
  (mapcar
    '(lambda (x y z)
       (setq li (append li  (list (list x y z)))))
    li1
    li2
    li3)
  li
  )

 

Kiểu như này này, nhưng nếu các x1,x2,y1,y2 muốn thay bằng "string" thì cần áp dụng khác, còn trong ví dụ chủ pic thì các số liệu hoàn toàn là kiểu số có lẽ chỉ cần thay vào là được

P/s Hix ẩu quá, không có ứng dụng thực tế, Srr mọi người để suy nghĩ thêm đã

 

Chỉ cần như vầy là được rồi bạn :

(mapcar '(lambda(x y z) (list x y z)) li1 li2 li3)

  • 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

 

Có lẽ do các bắt điểm thường trú làm cho LISP của bạn bị sai số

 

Đầu tiên bạn hãy thiết đặt:

(setvar  "CMDECHO"   0)

(setq osm  (getvar "OSMODE")

         cla    (getvar "CLAYER"  ))

(setvar  "OSMODE"   0)

 

Sau khi kết thúc bạn bổ xung vào:

(setvar  "CMDECHO"  1    )

(setvar  "OSMODE"    osm)

(setvar  "CLAYER"      cla )

(setvar  "OSMODE"   osm)
(setvar  "CLAYER"       cla)

Mình đã thêm đoạn code mà bạn nói ở trên, nhưng vẫn xảy ra sai số ... H mình đã gán bằng 15 nhưng khi vẽ đo lại thì vẫn chỉ là 14 :(

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

Hoặc ngắn hơn là:

(mapcar 'list li1 li2 li3)

 

 

Chỉ cần như vầy là được rồi bạn :

(mapcar '(lambda(x y z) (list x y z)) li1 li2 li3)

 

Các bác vui lòng giải thích kỹ hơn được không ạ?

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 vui lòng giải thích kỹ hơn được không ạ?

Thật ức chế, mình cật lực viết nửa trang ấn Ctrl+Z mất sạch không khôi phục lại nổi nửa, tính giải tích kỹ phần này nhưng mờ lại bị thế này

Lại đâu rồi, nản quá viết lại lần 3 rồi, ngày gì mà đen thế

 

(mapcar
  '(lambda(x y z)
     (list x y z))
  li1 li2 li3)
 
dòng đỏ tên hàm Mapcar ý nghĩa tách riêng biệt từng phần tử trong danh sách biến ở dòng tím
Sau đó cùng áp dụng một công thức quy định ở dòng màu xanh
(mapcar
  '(lambda(x y z)
     (list x y z))
  li1 li2 li3)
 
dòng 1 (mapcar : tên hàm mapcar/ ý nghĩa tách riêng biệt từng phần tủ trong danh sách biến màu tím sau đó cùng áp dụng với một lệnh duy nhất được quy định ở phần màu xanh
dòng màu xanh thực chất là phần "mô tả" một hàm mới với các tham số là x y z cũng có nghĩa nó chính là một cách viết khác: gọn hơn, dễ kiểm tra hơn của hàm defun bình thường
Defun bình thường cần có cấu trúc (defun tên-hàm ( [tham số] [ / biến của defun]) [thân defun] ) nhưng với lambda thì không cần khai báo tên-hàm nữa cách này làm gọn hơn, và dễ kiểm tra hơn trong code( vì nếu viết thêm một hàm defun mới thì khi đọc đến mapcar cần lật ngược lại tìm hàm defun này để xem cấu trúc code>> dẫn đến lâu la, mất thì giờ)
dong3 li1 li2 li3 là 3 biến (biến này phải ở dạng danh sách) dùng cho hàm mapcar
Xem thêm help nhé
Chỉnh sửa theo quansla

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

 

Thật ức chế, mình cật lực viết nửa trang ấn Ctrl+Z mất sạch không khôi phục lại nổi nửa, tính giải tích kỹ phần này nhưng mờ lại bị thế này

Lại đâu rồi, nản quá viết lại lần 3 rồi, ngày gì mà đen thế

 

(mapcar
  '(lambda(x y z)
     (list x y z))
  li1 li2 li3)
 
dòng đỏ tên hàm Mapcar ý nghĩa tách riêng biệt từng phần tử trong danh sách biến ở dòng tím
Sau đó cùng áp dụng một công thức quy định ở dòng màu xanh
(mapcar
  '(lambda(x y z)
     (list x y z))
  li1 li2 li3)
 
dòng 1 (mapcar : tên hàm mapcar/ ý nghĩa tách riêng biệt từng phần tủ trong danh sách biến màu tím sau đó cùng áp dụng với một lệnh duy nhất được quy định ở phần màu xanh
dòng màu xanh thực chất là phần "mô tả" một hàm mới với các tham số là x y z cũng có nghĩa nó chính là một cách viết khác: gọn hơn, dễ kiểm tra hơn của hàm defun bình thường
Defun bình thường cần có cấu trúc (defun tên-hàm ( [tham số] [ / biến của defun]) [thân defun] ) nhưng với lambda thì không cần khai báo tên-hàm nữa cách này làm gọn hơn, và dễ kiểm tra hơn trong code( vì nếu viết thêm một hàm defun mới thì khi đọc đến mapcar cần lật ngược lại tìm hàm defun này để xem cấu trúc code>> dẫn đến lâu la, mất thì giờ)
dong3 li1 li2 li3 là 3 biến (biến này phải ở dạng danh sách) dùng cho hàm mapcar
Xem thêm help nhé

Anh Admin xem dum em sao em viet hoai ma no kong hien day du bai viet cua em, cho em hoi luon , nick Admin la gi o day chi viet duoc tieng viet khong dau, em muon gui lai noi dung em da viet bang tieng viet va nho anh edit lai

 

 

 

 

Thật ức chế, mình cật lực viết nửa trang ấn Ctrl+Z mất sạch không khôi phục lại nổi nửa, tính giải tích kỹ phần này nhưng mờ lại bị thế này

Lại đâu rồi, nản quá viết lại lần 3 rồi, ngày gì mà đen thế

 

(mapcar

'(lambda(x y z)

(list x y z))

li1 li2 li3)

 

dòng đỏ tên hàm Mapcar ý nghĩa tách riêng biệt từng phần tử trong danh sách biến ở dòng tím

Sau đó cùng áp dụng một công thức quy định ở dòng màu xanh

(mapcar

'(lambda(x y z)

(list x y z))

li1 li2 li3)

 

dòng 1 (mapcar : tên hàm mapcar/ ý nghĩa tách riêng biệt từng phần tủ trong danh sách biến màu tím sau đó cùng áp dụng với một lệnh duy nhất được quy định ở phần màu xanh

dòng màu xanh thực chất là phần "mô tả" một hàm mới với các tham số là x y z cũng có nghĩa nó chính là một cách viết khác: gọn hơn, dễ kiểm tra hơn của hàm defun bình thường

Defun bình thường cần có cấu trúc (defun tên-hàm ( [tham số] [ / biến của defun]) [thân defun] ) nhưng với lambda thì không cần khai báo tên-hàm nữa cách này làm gọn hơn, và dễ kiểm tra hơn trong code( vì nếu viết thêm một hàm defun mới thì khi đọc đến mapcar cần lật ngược lại tìm hàm defun này để xem cấu trúc code>> dẫn đến lâu la, mất thì giờ)

dong3 li1 li2 li3 là 3 biến (biến này phải ở dạng danh sách) dùng cho hàm mapcar

Xem thêm help 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

bạn nhắc tới hàm SSGET mình mới nhớ ra, chẳng trách nó vẽ ra nhiều hình sau khi vẽ hình thứ nhất. cái này thì mình đã hiểu đc bản chất ... nhưng còn cái sai số thì mình vẫn chưa hiểu lắm ở cái mục 1. mà bạn nói, mong bạn nói rõ hơn để mình hiểu và sửa đc code cho đúng ... 

Hế hề hề,

Cái sai số này chắc mẻm là do cái phép tính chia đôi của bạn mà ra.

Bởi vì trong lisp phép chia nếu bạn nhập toàn số nguyên thì kết quả sẽ trả ra toàn số nguyên và như thế là nó bị mất đi phần thập phân. để tránh cái sự mất này thì nên thay 2 bằng 2.0 sẽ Ok vì lúc này 2.0 là số thực và kết quả sẽ cho bạn số thực, bao gồm cả phần nguyên và phần thập phân.

hề hề hề,

Chúc bạn thành công.

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

dây0 lầ lisp vẽ trục trọng cơ khí nhưng nó bị lỗi. lúc vẽ đường thẳng ranh giới giữa các đoạn trục nó bị lỗi122369_untitled_3.jpg

nó bị dư 2 doạn màu xanh như hình vẽ. nhờ các anh em xem hộ

http://www.cadviet.com/upfiles/3/122369_t6ve_truc_truc_bac.lsp

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

dây0 lầ lisp vẽ trục trọng cơ khí nhưng nó bị lỗi. lúc vẽ đường thẳng ranh giới giữa các đoạn trục nó bị lỗi

nó bị dư 2 doạn màu xanh như hình vẽ. nhờ các anh em xem hộ

http://www.cadviet.com/upfiles/3/122369_t6ve_truc_truc_bac.lsp

Hề hề hề,

Hãy upload lisp lên trang upload khác. Trang upload của diễn đàn dạo này chuối quá. càng ngày càng lắm hột, nhằn không nổ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

xin lỗi bác bình. cosd đậy a. trăm sự nhờ bác.

 

https://mail.google.com/mail/u/0/?ui=2&ik=de42d48f0c&view=att&th=1472502e85a70071&attid=0.1&disp=safe&realattid=f_hxfy4of80&zw

(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )

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

 

xin lỗi bác bình. cosd đậy a. trăm sự nhờ bác.

 

https://mail.google.com/mail/u/0/?ui=2&ik=de42d48f0c&view=att&th=1472502e85a70071&attid=0.1&disp=safe&realattid=f_hxfy4of80&zw

(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )
 
(Defun c:T6() (setvar "dimtxt" 2.5); cheu cao text
(setvar "dimdli" 2.8) ; k/c kich thuoc //
(setvar "dimasz" 1.2); do lon mui ten
(setvar "dimclre" 82) ; mau duong dong kich thuoc
(setvar "dimclrt" 82) ; mau text
(setvar "dimclrd" 82);  mau duong kich thuoc
(setvar "dimtad" 0)
(setvar "dimzin" 8)
(vl-load-com) 
(vl-cmdf "ucs" "W")
(vl-cmdf "LTSCALE" "3")
(vl-cmdf "undo" "be") 
(setq a (getpoint "\n xin chao! day la chuong trinh ve truc trong co khi. Duoc viet boi <<nguyenbd159@Gmail.com>>. hay nhap diem dau tien cua doan truc: "))
(setq b (getpoint a"\n VUI LONG NHAP CHIEU DAI DOAN TRUC : "))
(vl-cmdf ".line" a b "")
(if (= droffld nil) 
(setq droffld1 2.00) 
(setq droffld1 droffld) 
(setq 
droffld (GETREAL (strcat "\nVUI LONG NHAP DUONG KINH TRUC. SAU DO CHON DOAN THANG VUA VE TREN DESTOP : <" (rtos droffld1 2 2) ">")) 
(if (= droffld nil) 
(setq droffld droffld1) 
 
(if (= droffled nil) 
(setq droffled1 2.00) 
(setq droffled1 droffled) 
 
(if (= droffled nil) 
(setq droffled droffled1) 
 
 
(setq offlong (/ droffld 2))
(setq offle (+ offlong droffled))
 
(setq SS (ssget (list (cons 0 "arc,ellipse,lwpolyline,spline,line,circle")))) 
(setq i 0) 
(setq N (sslength ss)) 
(while (< i N) 
(setq TEXTENT (ssname SS i)) 
(setq luubatdiem (getvar "osmode")) 
(setvar "osmode" 0) 
 
(setq diemchuan (vlax-curve-getPointAtDist TEXTENT 0)) 
(setq diemdinhhuong (vlax-curve-getPointAtDist TEXTENT 0.01)) 
(setq goc (angle diemchuan diemdinhhuong)) 
(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 
 
(vl-cmdf ".offset" offlong textent diembentrai "") 
(vl-cmdf ".offset" offlong textent diembenphai "") 
(vl-cmdf "CHANGE" "P" "" "Properties"  "Color"  "10" "" )
(vl-cmdf "CHANGE" "P" "" "Properties"  "lt"  "center" "" )
 
(setq i (1+ i)) 
(setvar "osmode" luubatdiem) 
 
(vl-cmdf "undo" "end")
(setvar "osmode" 15359)
(command "line" diembentrai diembenphai"")
(command "CIRCLE" "0,0" offlong "")
(command  "dimlinear" pause PAUSE "T" "%%C<>" pause "" "*Cancel*" " *Cancel*")
(vl-cmdf "ucs" "M"  PAUSE )
(vl-cmdf "qdim"  )

Hề hề hề,

Code của bạn vẽ thừa là do thằng offle đó. Bạn có thể thay thằng này trong hai dòng code :

 

(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 

(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 

 

(setq diembentrai (polar diemchuan (- goc (/ pi 2)) offle)) 
(setq diembenphai (polar diemchuan (+ goc (/ pi 2)) offle)) 

bằng thằng oflong thì sẽ hết bị thừa.

Tuy nhiên code của bạn viết khá lủng củng và còn nhiều điều cần xem lại do cách nghĩ của bạn còn khá đơn giản.

Nếu bạn rảnh và có thời gian thì trao đổi qua yahoo mình sẽ nói rõ hơ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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×